🧠 Proxy Olmadan LLM Web Arama Motoru
Proxy gerektirmeyen çoklu arama motoru destekli bir LLM web bilgi erişim aracı; URL içerik analizi ve web sayfası taraması ile birlikte LangGraph ve LangGraph-MCP entegrasyonu sayesinde modüler akıllı ajan zinciri oluşturur. Büyük dil modellerinin harici bilgiye erişim senaryoları için özel olarak tasarlanmıştır; Playwright + Crawl4AI ile web alma ve analiz, asenkron eşzamanlılık, içerik dilimleme ve yeniden sıralama filtreleme desteği sunar.
🚀 Güncelleme Günlüğü
- 🔥 2025-09-05: langgraph-mcp desteği eklendi
- 🔥 2025-09-03: Docker ile dağıtım, dahili akıllı yeniden sıralama aracı, özel metin bölme ve sıralama desteği eklendi
✨ Özellikler Genel Bakış
- 🌐 Proxy Gerektirmez: Playwright ile yapılandırılmış yerli tarayıcı desteği sayesinde, proxy olmadan da web araması yapılabilir.
- 🔍 Çoklu Arama Motoru Desteği: Bing, Quark, Baidu, Sogou gibi popüler arama motorlarını destekleyerek bilgi kaynaklarının çeşitliliğini artırır.
- 🤖 Niyet Tanıma: Sistem, kullanıcının girdiği içeriğe göre otomatik olarak web araması mı yoksa URL çözümlemesi mi yapılacağını belirler.
- 🔄 Sorgu Parçalama: Kullanıcının arama niyetine göre sorguyu otomatik olarak birden fazla alt göreve böler ve sırayla uygular; böylece arama alaka düzeyi ve verimliliği artar.
- ⚙️ Akıllı Sistem Mimari: LangGraph tabanlı "web_search" ve "link_parser" ile paketlenmiştir.
- 🏃♂️ Asenkron Eşzamanlı Görev İşleme: Asenkron ve eşzamanlı görev işleme desteğiyle birden fazla arama görevi verimli şekilde yürütülür.
- 📝 İçerik İşleme Optimizasyonu:
- ✂️ İçerik Dilimleme: Web sayfasındaki uzun içerikler parçalara ayrılır.
- 🔄 İçerik Yeniden Sıralama: Akıllı şekilde yeniden sıralayarak bilgi alaka düzeyini artırır.
- 🚫 İçerik Filtreleme: Alakasız veya yinelenen içerikler otomatik olarak çıkarılır.
- 🌐 Çoklu Platform Desteği:
- 🐳 Docker Desteği: Tek tıkla başlatma, hızlı arka uç servis kurulumu.
- 🖥️ FastAPI arka uç arayüzü sunar, herhangi bir sisteme entegre edilebilir.
- 🌍 Gradio Web UI ile hızlıca görsel uygulama olarak konuşlandırılabilir.
- 🧩 Tarayıcı Eklentisi Desteği: Edge desteği, akıllı URL çözümleme eklentisiyle tarayıcıda doğrudan web sayfası çözümleme ve içerik çekme isteği gönderebilme.


⚡ Hızlı Başlangıç
Depoyu Klonlama
git clone https://github.com/itshyao/proxyless-llm-websearch.git
cd proxyless-llm-websearchBağımlılıkların Kurulumu
pip install -r requirements.txt
python -m playwright installOrtam Değişkeni Yapılandırması
# 百炼llm
OPENAI_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
OPENAI_API_KEY=sk-xxx
MODEL_NAME=qwen-plus-latest百炼embedding
EMBEDDING_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
EMBEDDING_API_KEY=sk-xxx
EMBEDDING_MODEL_NAME=text-embedding-v4百炼reranker
RERANK_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
RERANK_API_KEY=sk-xxx
RERANK_MODEL=gte-rerank-v2Langgraph-Agent
#### DEMO
python agent/demo.py#### API SUNUCUSU
python agent/api_serve.pyimport requestsurl = "http://localhost:8800/search"
data = {
"question": "广州今日天气",
"engine": "bing",
"split": {
"chunk_size": 512,
"chunk_overlap": 128
},
"rerank": {
"top_k": 5
}
}
try:
response = requests.post(
url,
json=data
)
if response.status_code == 200:
print("✅ 请求成功!")
print("响应内容:", response.json())
else:
print(f"❌ 请求失败,状态码:{response.status_code}")
print("错误信息:", response.text)
except requests.exceptions.RequestException as e:
print(f"⚠️ 请求异常:{str(e)}")
#### Gradio
python agent/gradio_demo.py

#### docker
docker-compose -f docker-compose-ag.yml up -d --buildLanggrph-MCP
#### MCP Hizmetini Başlatma
python mcp/websearch.py#### DEMO
python mcp/demo.py#### API SUNUCUSU
python mcp/api_serve.pyimport requestsurl = "http://localhost:8800/search"
data = {
"question": "广州今日天气"
}
try:
response = requests.post(
url,
json=data
)
if response.status_code == 200:
print("✅ 请求成功!")
print("响应内容:", response.json())
else:
print(f"❌ 请求失败,状态码:{response.status_code}")
print("错误信息:", response.text)
except requests.exceptions.RequestException as e:
print(f"⚠️ 请求异常:{str(e)}")
#### docker
docker-compose -f docker-compose-mcp.yml up -d --buildÖzelleştirilmiş Modüller
#### Özelleştirilmiş Bölümlendirme
from typing import Optional, Listclass YourSplitter:
def __init__(self, text: str, chunk_size: int = 512, chunk_overlap: int = 128):
self.text = text
self.chunk_size = chunk_size
self.chunk_overlap = chunk_overlap
def split_text(self, text: Optional[str] = None) -> List:
# TODO: implement splitting logic
return ["your chunk"]
#### Özelleştirilmiş Yeniden Sıralama
from typing import List, Union, Tupleclass YourReranker:
async def get_reranked_documents(
self,
query: Union[str, List[str]],
documents: List[str],
) -> Union[
Tuple[List[str]],
Tuple[List[int]],
]:
return ["your chunk"], ["chunk index"]
🔍 Çevrimiçi Ağ Arama Testi ile Karşılaştırma
Projeyi bazı popüler çevrimiçi API'lerle karşılaştırarak, karmaşık sorulardaki performansını değerlendirdik.
🔥 Veri Seti
- Veri seti, Alibaba'nın yayınladığı WebWalkerQA kaynaklıdır; eğitim, akademik konferanslar, oyun gibi birçok alanı kapsayan 680 zorlu soru içerir.
- Veri seti hem Çince hem de İngilizce soruları içerir.
🧑🏫 Karşılaştırma Sonuçları
| Arama Motoru/Sistem | ✅ Doğru | ❌ Yanlış | ⚠️ Kısmen Doğru | | ------------------- | --------- | ---------- | ---------------------- | | Volcano Ark | 5.00% | 72.21% | 22.79% | | Bailian | 9.85% | 62.79% | 27.35% | | Bizim | 19.85% | 47.94% | 32.06% |
🙏 Teşekkürler
Bu projenin bazı işlevleri aşağıdaki açık kaynak projelerin desteği ve ilhamı sayesinde mümkün olmuştur, teşekkür ederiz:
- 🧠 LangGraph: Modüler akıllı ajan zinciri çerçevesi oluşturmak için kullanılır, karmaşık ajan sistemlerinin hızlı kurulmasına yardımcı olur.
- 🕷 Crawl4AI: Güçlü web içerik analiz aracı, verimli web kazıma ve veri çıkarımı sağlar.
- 🌐 Playwright: Modern tarayıcı otomasyon aracı, tarayıcılar arası web kazıma ve test otomasyonunu destekler.
- 🔌 Langchain MCP Adapters: Çoklu zincir MCP işlemlerinin oluşturulmasında kullanılır.