🧠 Bezproxyowy silnik wyszukiwania internetowego LLM
Wielosilnikowe narzędzie LLM do wyszukiwania w Internecie bez potrzeby korzystania z proxy, obsługujące analizę zawartości URL i pobieranie stron internetowych, łączące LangGraph oraz LangGraph-MCP w celu realizacji modularnych łańcuchów agentów. Zaprojektowane specjalnie do wykorzystania zewnętrznej wiedzy przez duże modele językowe, obsługuje pobieranie i analizę stron przez Playwright + Crawl4AI, wspiera asynchroniczność, równoległość, dzielenie treści i filtrowanie oraz re-ranking.
🚀 Dziennik zmian
- 🔥 2025-09-05: Wsparcie dla langgraph-mcp
- 🔥 2025-09-03: Nowe wdrożenie Docker, wbudowany inteligentny re-ranker, wsparcie dla niestandardowych segmentatorów i re-rankerów tekstu
✨ Przegląd funkcji
- 🌐 Brak potrzeby proxy: Dzięki konfiguracji Playwright dla przeglądarek krajowych, możliwe jest wyszukiwanie w sieci bez użycia proxy.
- 🔍 Wsparcie wielu wyszukiwarek: Obsługuje główne wyszukiwarki, takie jak Bing, Quark, Baidu, Sogou, zwiększając różnorodność źródeł informacji.
- 🤖 Rozpoznawanie intencji: System automatycznie rozpoznaje, czy użytkownik chce wyszukać w internecie, czy przeanalizować URL, na podstawie treści wejściowej.
- 🔄 Rozbijanie zapytań: Na podstawie intencji użytkownika, zapytania są automatycznie dzielone na podzadania i wykonywane kolejno, zwiększając trafność i efektywność wyszukiwania.
- ⚙️ Architektura agentowa: Bazuje na LangGraph, obejmuje "web_search" oraz "link_parser".
- 🏃♂️ Asynchroniczna i równoległa obsługa zadań: Obsługuje asynchroniczne i równoległe przetwarzanie zadań, umożliwiając wydajną obsługę wielu wyszukiwań.
- 📝 Optymalizacja przetwarzania treści:
- ✂️ Dzielenie treści: Długie treści na stronach internetowych dzielone są na fragmenty.
- 🔄 Przestawianie treści: Inteligentna reorganizacja, zwiększająca trafność informacji.
- 🚫 Filtrowanie treści: Automatyczne usuwanie nieistotnych lub powtarzających się informacji.
- 🌐 Wsparcie dla wielu platform:
- 🐳 Wsparcie dla wdrożenia w Dockerze: Uruchomienie jednym kliknięciem, szybkie budowanie usług backendowych.
- 🖥️ Dostępne API FastAPI dla backendu, możliwa integracja z dowolnym systemem.
- 🌍 Dostępny Gradio Web UI, umożliwiający szybkie wdrożenie aplikacji wizualnej.
- 🧩 Wsparcie dla wtyczek przeglądarkowych: Wsparcie dla Edge, inteligentny plugin do analizy URL, pozwalający na bezpośrednie wysyłanie zapytań o analizę i ekstrakcję treści w przeglądarce.


⚡ Szybki start
Klonowanie repozytorium
git clone https://github.com/itshyao/proxyless-llm-websearch.git
cd proxyless-llm-websearchInstalacja zależności
pip install -r requirements.txt
python -m playwright installKonfiguracja zmiennych środowiskowych
# 百炼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#### SERWER API
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
#### Uruchamianie usługi MCP
python mcp/websearch.py#### DEMO
python mcp/demo.py#### SERWER API
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 --buildModuły niestandardowe
#### Niestandardowe podziały na bloki
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"]
#### Niestandardowe przestawianie
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"]
🔍 Porównanie z testem wyszukiwania online
Porównaliśmy nasz projekt z kilkoma popularnymi API online, aby ocenić jego wydajność przy złożonych problemach.
🔥 Zbiór danych
- Zbiór danych pochodzi z publikacji Ali WebWalkerQA, zawiera 680 trudnych pytań, obejmujących edukację, konferencje naukowe, gry i inne dziedziny.
- Zbiór danych zawiera pytania w języku chińskim i angielskim.
🧑🏫 Wyniki porównania
| Wyszukiwarka/System | ✅ Poprawne | ❌ Niepoprawne | ⚠️ Częściowo poprawne | | ------------------- | ---------- | ------------- | --------------------- | | Volcano Ark | 5,00% | 72,21% | 22,79% | | Bailian | 9,85% | 62,79% | 27,35% | | Our | 19,85% | 47,94% | 32,06% |
🙏 Podziękowania
Część funkcji tego projektu została zainspirowana i wsparta przez następujące projekty open-source, za co serdecznie dziękujemy:
- 🧠 LangGraph: służy do budowy modułowych frameworków agentów, umożliwiając szybkie tworzenie złożonych systemów agentowych.
- 🕷 Crawl4AI: zaawansowane narzędzie do analizy treści stron internetowych, wspierające efektywne pobieranie i ekstrakcję danych.
- 🌐 Playwright: nowoczesne narzędzie do automatyzacji przeglądarek, umożliwiające cross-browser web scraping i automatyzację testów.
- 🔌 Langchain MCP Adapters: służy do budowania obsługi MCP dla wielu łańcuchów.