🧠 Mesin Pencari Web LLM Tanpa Proxy
Sebuah alat pencarian web LLM multi-mesin pencari tanpa proxy, mendukung parsing konten URL dan perayapan web, menggabungkan LangGraph dan LangGraph-MCP untuk membangun rantai agen modular. Dirancang khusus untuk skenario penggunaan penarikan pengetahuan eksternal oleh model bahasa besar, mendukung pengambilan dan parsing web dengan Playwright + Crawl4AI, mendukung asinkron, pemrosesan paralel, pemotongan konten, dan filtrasi serta penyusunan ulang.
🚀 Log Pembaruan
- 🔥 2025-09-05: Mendukung langgraph-mcp
- 🔥 2025-09-03: Penambahan deploy Docker, re-ranker cerdas bawaan, mendukung pemisah teks dan re-ranker kustom
✨ Daftar Fitur
- 🌐 Tanpa Proxy: Dengan konfigurasi Playwright yang mendukung browser dalam negeri, pencarian internet dapat dilakukan tanpa perlu proxy.
- 🔍 Dukungan Multi Mesin Pencari: Mendukung Bing, Quark, Baidu, Sogou, dan mesin pencari utama lainnya, meningkatkan keragaman sumber informasi.
- 🤖 Pengenalan Intent: Sistem dapat secara otomatis menentukan apakah ingin melakukan pencarian web atau mem-parsing URL berdasarkan input pengguna.
- 🔄 Pemecahan Query: Berdasarkan intent pencarian pengguna, query secara otomatis dipecah menjadi beberapa sub-tugas dan dieksekusi secara berurutan untuk meningkatkan relevansi dan efisiensi pencarian.
- ⚙️ Arsitektur Agen Cerdas: Berdasarkan LangGraph yang membungkus "web_search" dan "link_parser".
- 🏃♂️ Pemrosesan Tugas Asinkron dan Paralel: Mendukung pemrosesan tugas secara asinkron dan paralel untuk menangani banyak pencarian dengan efisien.
- 📝 Optimasi Pemrosesan Konten:
- ✂️ Pemotongan Konten: Konten panjang halaman web dipotong per bagian.
- 🔄 Penyusunan Ulang Konten: Penyusunan ulang secara cerdas untuk meningkatkan relevansi informasi.
- 🚫 Penyaringan Konten: Secara otomatis menghapus konten yang tidak relevan atau duplikat.
- 🌐 Dukungan Multi Platform:
- 🐳 Dukungan Deploy Docker: Satu klik untuk memulai, membangun layanan backend dengan cepat.
- 🖥️ Menyediakan API backend FastAPI, dapat diintegrasikan ke sistem apa pun.
- 🌍 Menyediakan Gradio Web UI, dapat dengan cepat di-deploy sebagai aplikasi visual.
- 🧩 Dukungan Plugin Browser: Mendukung Edge, menyediakan plugin parsing URL cerdas, langsung melakukan parsing halaman web dan permintaan ekstraksi konten di browser.


⚡ Mulai Cepat
Kloning Repository
git clone https://github.com/itshyao/proxyless-llm-websearch.git
cd proxyless-llm-websearchInstalasi Dependensi
pip install -r requirements.txt
python -m playwright installKonfigurasi Variabel Lingkungan
# 百炼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 SERVE
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
#### Menyalakan layanan MCP
python mcp/websearch.py#### DEMO
python mcp/demo.py#### API SERVE
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 --buildModul Kustom
#### Pembagian Blok Kustom
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"]
#### Penataan Ulang Kustom
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"]
🔍 Perbandingan dengan Pengujian Pencarian Jaringan Online
Kami membandingkan proyek ini dengan beberapa API daring utama untuk mengevaluasi performanya dalam menjawab pertanyaan kompleks.
🔥 Dataset
- Dataset berasal dari WebWalkerQA yang dirilis oleh Alibaba, berisi 680 pertanyaan tingkat kesulitan tinggi yang mencakup berbagai bidang seperti pendidikan, konferensi akademik, dan game.
- Dataset mencakup pertanyaan dalam bahasa Mandarin dan Inggris.
🧑🏫 Hasil Perbandingan
| Mesin Pencari/Sistem | ✅ Benar | ❌ Salah | ⚠️ Sebagian Benar | | -------------------- | -------- | -------- | ---------------- | | Volcano Ark | 5.00% | 72.21% | 22.79% | | Bailian | 9.85% | 62.79% | 27.35% | | Our | 19.85% | 47.94% | 32.06% |
🙏 Ucapan Terima Kasih
Sebagian fungsi dari proyek ini didukung dan terinspirasi oleh proyek open source berikut, dengan ini kami mengucapkan terima kasih:
- 🧠 LangGraph: Digunakan untuk membangun kerangka kerja rantai agen modular, membantu membangun sistem agen kompleks secara cepat.
- 🕷 Crawl4AI: Alat parsing konten web yang kuat, mendukung pengambilan dan ekstraksi data web secara efisien.
- 🌐 Playwright: Alat otomatisasi browser modern, mendukung pengambilan web dan otomatisasi pengujian lintas browser.
- 🔌 Langchain MCP Adapters: Digunakan untuk membangun penanganan MCP multi-chain.