智谱搜索接口加入
This commit is contained in:
parent
718766abb8
commit
8cd80dcd9c
|
|
@ -14,7 +14,7 @@ search_local_knowledgebase:
|
|||
# 搜索引擎工具配置项。推荐自己部署 searx 搜索引擎,国内使用最方便。
|
||||
search_internet:
|
||||
use: false
|
||||
search_engine_name: tavily
|
||||
search_engine_name: zhipu_search
|
||||
search_engine_config:
|
||||
bing:
|
||||
bing_search_url: https://api.bing.microsoft.com/v7.0/search
|
||||
|
|
@ -36,6 +36,8 @@ search_internet:
|
|||
search_depth: advanced
|
||||
include_raw_content: True
|
||||
max_results: 1
|
||||
zhipu_search:
|
||||
zhipu_api_key: 'e2bdc39618624fd782ebcd721185645c.pcvcrTPFT69Jda8B'
|
||||
top_k: 5
|
||||
verbose: Origin
|
||||
conclude_prompt: "<指令>这是搜索到的互联网信息,请你根据这些信息进行提取并有调理,简洁的回答问题。如果无法从中得到答案,请说 “无法搜索到能回答问题的内容”。
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
import uuid
|
||||
from typing import Dict, List
|
||||
|
||||
import requests
|
||||
from langchain.docstore.document import Document
|
||||
from langchain.text_splitter import RecursiveCharacterTextSplitter
|
||||
from langchain.utilities.bing_search import BingSearchAPIWrapper
|
||||
|
|
@ -107,15 +109,42 @@ def tavily_search(text, config, top_k):
|
|||
# print("=== 完整搜索返回值 ===")
|
||||
# print(search_results)
|
||||
return search_results
|
||||
def zhipu_search(text, config):
|
||||
api_key = config["zhipu_api_key"]
|
||||
msg = [
|
||||
{
|
||||
"role": "user",
|
||||
"content": text
|
||||
}
|
||||
]
|
||||
tool = "web-search-pro"
|
||||
url = "https://open.bigmodel.cn/api/paas/v4/tools"
|
||||
request_id = str(uuid.uuid4())
|
||||
data = {
|
||||
"request_id": request_id,
|
||||
"tool": tool,
|
||||
"stream": False,
|
||||
"messages": msg
|
||||
}
|
||||
resp = requests.post(
|
||||
url,
|
||||
json=data,
|
||||
headers={'Authorization': api_key},
|
||||
timeout=300
|
||||
)
|
||||
print(resp.content.decode())
|
||||
return resp.content.decode()
|
||||
|
||||
SEARCH_ENGINES = {
|
||||
"bing": bing_search,
|
||||
"duckduckgo": duckduckgo_search,
|
||||
"metaphor": metaphor_search,
|
||||
"searx": searx_search,
|
||||
"tavily": tavily_search
|
||||
"tavily": tavily_search,
|
||||
"zhipu_search": zhipu_search
|
||||
}
|
||||
|
||||
|
||||
# tavily的解析
|
||||
# def search_result2docs_tavily(search_results) -> List[Document]:
|
||||
# docs = []
|
||||
|
|
@ -132,6 +161,17 @@ SEARCH_ENGINES = {
|
|||
|
||||
def search_result2docs(search_results, engine_name) -> List[Document]:
|
||||
docs = []
|
||||
if engine_name == "zhipu_search":
|
||||
try:
|
||||
results = search_results["choices"][0]["message"]["tool_calls"][1]["search_result"]
|
||||
except (KeyError, IndexError) as e:
|
||||
print(f"结构异常: {e}")
|
||||
results = []
|
||||
# 遍历并处理每个结果
|
||||
for idx, result in enumerate(search_results, 1):
|
||||
docs.append(result.get('content', '无内容'))
|
||||
print(f"内容:\n{result.get('content', '无内容')}\n")
|
||||
return docs
|
||||
page_contents_key = "snippet" if engine_name != "tavily" else "content"
|
||||
metadata_key = "link" if engine_name != "tavily" else "url"
|
||||
for result in search_results:
|
||||
|
|
|
|||
Loading…
Reference in New Issue