Upload files to "/"
هذا الالتزام موجود في:
298
README.md
Normal file
298
README.md
Normal file
@@ -0,0 +1,298 @@
|
||||
# The Arab Technician's Journey (رحلة التقني العربي)
|
||||
|
||||
🌐 Language: **English** | [العربية](README.ar.md)
|
||||
|
||||
---
|
||||
|
||||
## Submission Information
|
||||
|
||||
Submission for the Arabic Tech Quest Contest.
|
||||
|
||||
This repository documents my progress, findings, code, observations, and deliverables across all stations of the challenge.
|
||||
|
||||
---
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Station 1](#station-1)
|
||||
- [Station 2](#station-2)
|
||||
- [Station 3](#station-3)
|
||||
- [Station 4](#station-4)
|
||||
- [Station 5](#station-5)
|
||||
- [Station 6](#station-6)
|
||||
- [Station 7](#station-7)
|
||||
- [Station 8](#station-8)
|
||||
- [Station 9](#station-9)
|
||||
|
||||
---
|
||||
|
||||
# Station 1
|
||||
|
||||
## Account & Posts
|
||||
|
||||
- [Qabilah Profile](https://qabilah.com/profile/bilal-alasha/professional-profile)
|
||||
- [First Post](https://qabilah.com/posts/%D8%A8%D9%84%D8%A7%D9%84-%D8%A7%D9%84%D8%B9%D8%B4%D8%A7-%D9%85%D8%B4%D8%A7%D8%B1%D9%83%D8%A9-%D9%81%D9%8A-%D8%A3%D8%A8%D8%AD%D8%A7%D8%AB-saif-%D9%88%D8%A7%D9%84%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A2%D9%84%D9%8A~254541840693334016)
|
||||
|
||||
## Platform Review
|
||||
|
||||
### What I Liked
|
||||
|
||||
- Overall design is good and easy to navigate.
|
||||
- The `قبائل` (Tribes) concept is excellent.
|
||||
- Auto-tagging works impressively; even a simple post was categorized correctly.
|
||||
- Genuine interactions are encouraged while spam and pirated content are discouraged.
|
||||
- The ability to contribute as little as $1 feels like an honest donation model.
|
||||
|
||||
### What Could Be Improved
|
||||
|
||||
- The hackathon countdown shown during browsing felt distracting.
|
||||
- Missing bilingual profiles (Arabic + English names).
|
||||
- Very low traffic currently.
|
||||
- The paid plan offers limited practical value.
|
||||
- Long-term sustainability may become challenging, especially if video uploads are added.
|
||||
---
|
||||
|
||||
# Station 2
|
||||
|
||||
## Website
|
||||
|
||||
[Live Website](https://docker-9d275c9c-web-38fb60c3.hosted.cumin.dev/)
|
||||
|
||||
### Deployment Experience
|
||||
|
||||
The deployment process on Ghaymah was extremely easy—perhaps too easy. For example, I did not need to verify my email before deploying a website, which could potentially be abused for spam.
|
||||
|
||||
**Update:** After more than 12 hours, the website was still not active. I double-checked my setup and contacted support.
|
||||
|
||||
**Update 2:** Support never responded. Eventually, the person who assigned the tasks helped me identify the issue. The problem was on my side: I zipped the entire folder instead of placing `index.html` correctly in the root directory.
|
||||
|
||||
---
|
||||
|
||||
# Station 3
|
||||
|
||||
## Part A – Mithal Search Evaluation
|
||||
|
||||
I chose browser automation using Playwright (Python) to execute 100 diverse Arabic queries on Mithal.
|
||||
|
||||
The script:
|
||||
|
||||
- Generated 100 topics covering science, history, culture, technology, and daily life.
|
||||
- Opened each search URL with a 2-second delay.
|
||||
- Captured a full-page screenshot for every SERP.
|
||||
- Extracted structured data into a CSV file.
|
||||
- Logged errors and retried failed queries up to two times.
|
||||
|
||||
> **DISCLAIMER:** I would not have been able to complete this script in such a short time without assistance from LLMs. Browser automation was completely new to me, so I had to learn the basics from scratch while guiding the model to generate the code.
|
||||
|
||||
### Results
|
||||
|
||||
[CSV Results](https://app.gitpasha.com/Bilal_Alasha/Search_Script_-_results)
|
||||
|
||||
### Observations
|
||||
|
||||
- The search engine appears heavily dependent on exact keyword matching.
|
||||
- Context awareness is limited.
|
||||
- English typo correction works better than Arabic typo correction.
|
||||
- Only a single page of results is available.
|
||||
- Video results are not supported.
|
||||
- I like that the AI component is optional instead of being forced on the user.
|
||||
- The UI feels outdated and could benefit from modernization.
|
||||
|
||||
## Part B – Agentic Mithal
|
||||
|
||||
The current way Mithal is working is just a very simple or average at best search engine. The only point going for it is the no-tracking policy, and to be honest it's more of a 'trust me bro' – nothing is solid or explained about it. There is also the Arabic-first approach, but it's not super realistic since people would want to search in other languages too all the time, so I don't really count that as a feature.
|
||||
|
||||
The question you are asking is how to evolve it into an agentic experience. Now this is much more interesting. For example, currently when a user asks "ما هو أفضل هاتف في الرياض لعام 2024", the engine simply matches words and shops and provides links. Yet if we use Agentic Mithal → it breaks down into sub‑tasks: search phone reviews, check current prices via API, filter by "available in Riyadh", then synthesizes a ranked answer with citations. That would also include stuff like currency converter, geolocation, and price APIs.
|
||||
|
||||
Now to do this without any problems would require a lot of APIs and work with the main stores, for example. And if we are Arabic-first, that shouldn't be super hard, but still a lot of work. As far as I know, currently AIs can't really do the 'browse like a human and get info' thing without messing something up. But having it implemented as a search engine is actually a good idea if it does not scrape websites and gets official APIs.
|
||||
|
||||
One of the problems you would be facing is personalization without tracking, since that would require on‑device profiles, session‑based memory, or user‑declared interests.
|
||||
|
||||
There is also the simple issue of Arabic language difficulties, such as: morphological richness (same root gives many meanings), dialects (Egyptian, Levantine, Gulf) – the agent must detect or ask. Right‑to‑left script and bidirectional text issues, and limited high‑quality Arabic datasets for training retrieval models.
|
||||
|
||||
So if I were to start with this engine, I would start with Modern Standard Arabic + limited dialect support, then expand.
|
||||
|
||||
Finally, the biggest problem is going to be hallucination & multi‑source synthesis. First of all, using something like RAG would help us avoid that, since the agent only answers from retrieved documents, never from "memory". As for multi‑source synthesis, I would prefer using official APIs from the sources for two main reasons: first, not eating away traffic from the official source, and also to avoid the scraping that would be annoying to do – both because of websites' security and the simple fact that it can get some stuff wrong. And of course, every claim must have a clickable source and a disclaimer that it's AI, and even with all of that it could still get something wrong.
|
||||
|
||||
Despite these challenges – hallucinations, Arabic language complexity, and the need for official API integrations – building an agentic Mithal is not only possible but necessary. If executed with transparency, clear citations, and a gradual expansion from Modern Standard Arabic to dialects, Mithal could evolve from a mediocre 'trust me bro' engine into a truly trustworthy, privacy‑first, Arabic‑centric assistant. That would be a search experience worth using.
|
||||
|
||||
---
|
||||
|
||||
# Station 4
|
||||
|
||||
## Token Request
|
||||
|
||||
### Command Used
|
||||
|
||||
```bash
|
||||
curl.exe -X POST `
|
||||
https://jinn-compute-http-ed7c6e1b.hosted.cumin.dev/cb5a23a97-token-proxy/ `
|
||||
-H "Content-Type: application/json" `
|
||||
-d '{\"username\": \"Bilal\", \"platform\": \"github\"}'
|
||||
```
|
||||
|
||||
The endpoint returned both an ID and a token. However, using the same username and platform repeatedly still generated new IDs and tokens each time, so I was unsure about the purpose of that behavior.
|
||||
|
||||
## LLM Interaction Script
|
||||
|
||||
Instead of using the official UI, I built a Python script that interacts directly with the service.
|
||||
|
||||
Since there was no official API documentation, I inspected browser network requests and eventually managed to:
|
||||
|
||||
- Create new chats.
|
||||
- Reuse existing chat IDs.
|
||||
- Maintain conversations through the script.
|
||||
|
||||
### Initial Prompt
|
||||
|
||||
```text
|
||||
You are an expert R&D assistant specialized in AI, Machine Learning, and LLMs. Provide 3-5 creative, underexplored research directions. For each idea: short title, brief explanation, why it's promising (with novelty evidence), and at least one reference to a paper or source. Be concise but insightful. Reply only in Arabic.
|
||||
```
|
||||
|
||||
[R&D Bot Repository](https://app.gitpasha.com/Bilal_Alasha/R-D_Bot)
|
||||
|
||||
---
|
||||
|
||||
# Station 5
|
||||
|
||||
## aiXplain Agent
|
||||
|
||||
[Agent Link](https://studio.aixplain.com/browse/agent/6a2698e71ea81106dbbaca0d?by=67117)
|
||||
|
||||
Agent ID:
|
||||
|
||||
```text
|
||||
6a2698e71ea81106dbbaca0d
|
||||
```
|
||||
|
||||
## MCP Overview
|
||||
|
||||
An MCP server can connect multiple tools, models, and agents through a single PAYG API key.
|
||||
|
||||
### Main Integration Methods
|
||||
|
||||
1. Connect external services through Studio.
|
||||
2. Add external APIs as SDK tools.
|
||||
|
||||
### Limitation
|
||||
|
||||
I could not generate an API key because the feature required credit, so I continued using the UI only.
|
||||
|
||||
I went to create new agent I got our frind "Weather & Info Assistant" up and running , the the main Instruction I made sure it uses the MCP tool .
|
||||
then to add an MCP server to the work flow of the agent I simply pressed the + button and searched for it ... too easy if you ask me . then I simply gave it a name , then at the start I tried using public MCP servers but it did not work since the ones I found seems to be offline so my only option was to run one localy from my machine .. so that's what I did
|
||||
|
||||
## Local MCP Setup
|
||||
|
||||
### Time Server
|
||||
|
||||
```bash
|
||||
mcp-proxy --port 3000 uvx mcp-server-time
|
||||
```
|
||||
|
||||
but that did not work since uvx is not on windows by default ( I have no idea what that is I just wanted to be done with this so don't ask lol) so I had to run this command :
|
||||
|
||||
```bash
|
||||
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
|
||||
```
|
||||
|
||||
### Exposing the Server
|
||||
|
||||
then finally I was able to run the server ... localy , now to be able to access it over the web I had to use some kinda tool and after some searching I found my good friend ngrok , so I went to there website and download it , and ofc .. they want me to sign up to get my auth key ... sure why not so I signed up .. then I had to run:
|
||||
|
||||
```bash
|
||||
ngrok config add-authtoken "<YOUR_AUTHTOKEN>"
|
||||
ngrok http 3000
|
||||
```
|
||||
|
||||
### Weather Server
|
||||
|
||||
and finally we are online up and running .. now going back to Xstudio where we connect the mcp server to :"https://compel-reemerge-june.ngrok-free.dev/mcp" and finally we have it up and running .
|
||||
now we actually need to make it tell the weather since for now I just tested the time to do so we just re run the server using this command :
|
||||
|
||||
```bash
|
||||
mcp-proxy --port 3000 uvx casual-mcp-server-weather --transport streamablehttp
|
||||
```
|
||||
|
||||
After reconnecting through aiXplain Studio, I successfully accessed:
|
||||
|
||||
- Current weather.
|
||||
- Forecasts.
|
||||
- UV index.
|
||||
- Air quality.
|
||||
|
||||
---
|
||||
|
||||
# Station 6
|
||||
|
||||
## Feedback
|
||||
|
||||
Again, like Ghaymah, please use some kind of email verification. I was able to sign up without confirming anything.
|
||||
|
||||
I also noticed issues when uploading multiple files through the UI. Uploading more than five files at once often failed, while uploading files individually or through the command line worked reliably.
|
||||
|
||||
## Selected Project
|
||||
|
||||
[Plant Leaf Disease Classification and Confidence Estimation using Neural Networks with Fuzzy Logic](https://app.gitpasha.com/Bilal_Alasha/Plant-Leaf-Disease-Classification-and-confedence-Estimation-using-Neural-Networks-with-Fuzzy-Logic/src/branch/main/)
|
||||
|
||||
### Why This Project?
|
||||
|
||||
To be hounest I don't have many (good projects) , If I wanted to pick one from how inflinsul on it it was I would have picked another project but it was very bad in the other project I simulated the VFH algorithm with a robot , it was funny looking back at that time how little did I know about anything and tried to to that in 2 days only .
|
||||
|
||||
as for this project it kind of reminded me of that since we hade to do it a very short ammount of time with a lot going on , I am not statsifed with it not even a little from a sinctific stad point but I leaned a lot from it and actually done my part in the time we were givin , my co author was not able to do it tho so it's kinda janky from his part .
|
||||
|
||||
---
|
||||
|
||||
# Station 7
|
||||
|
||||
## Projects Reviewed
|
||||
|
||||
### Project 1
|
||||
|
||||
https://www.mortakaz.com/projects/691172dd0954c2682eb139d2?tab=reviews
|
||||
|
||||
### Project 2
|
||||
|
||||
https://www.mortakaz.com/projects/6985c7ae76d5a85c6107f577?tab=reviews
|
||||
|
||||
### Why I Chose Them
|
||||
|
||||
- Project 1 aligns with my strong interest in privacy, tracking, and data collection.
|
||||
- Project 2 introduced an interesting new framework from an Arab developer and seemed promising enough to support with feedback.
|
||||
|
||||
---
|
||||
|
||||
# Station 8
|
||||
|
||||
The detald PDF file have been uploaded to the same repo
|
||||
|
||||
---
|
||||
|
||||
# Station 9
|
||||
|
||||
## Project Overview
|
||||
|
||||
I connected my LLM script with my Mithal search engine script.
|
||||
|
||||
The workflow:
|
||||
|
||||
1. Generate research directions.
|
||||
2. Search Mithal using three different search terms.
|
||||
3. Retrieve the top three results for each search.
|
||||
4. Organize everything into a text report.
|
||||
|
||||
I chose this idea because my primary reason for applying was R&D, and I already had much of the required code available.
|
||||
|
||||
### Repository
|
||||
|
||||
[Station 9 Repository](https://app.gitpasha.com/Bilal_Alasha/Station_9_finale-version)
|
||||
|
||||
### What I Learned
|
||||
|
||||
- There are many Arabic services available that most people have never heard of.
|
||||
- Building a polished experience comparable to major companies such as Google, Microsoft, or Amazon requires far more work than it initially appears.
|
||||
|
||||
---
|
||||
|
||||
## Notes
|
||||
|
||||
All opinions and observations included in this repository reflect my personal experience while completing the challenge.
|
||||
المرجع في مشكلة جديدة
حظر مستخدم