智谱搜索接口加入
This commit is contained in:
parent
718766abb8
commit
8cd80dcd9c
|
|
@ -14,7 +14,7 @@ search_local_knowledgebase:
|
||||||
# 搜索引擎工具配置项。推荐自己部署 searx 搜索引擎,国内使用最方便。
|
# 搜索引擎工具配置项。推荐自己部署 searx 搜索引擎,国内使用最方便。
|
||||||
search_internet:
|
search_internet:
|
||||||
use: false
|
use: false
|
||||||
search_engine_name: tavily
|
search_engine_name: zhipu_search
|
||||||
search_engine_config:
|
search_engine_config:
|
||||||
bing:
|
bing:
|
||||||
bing_search_url: https://api.bing.microsoft.com/v7.0/search
|
bing_search_url: https://api.bing.microsoft.com/v7.0/search
|
||||||
|
|
@ -36,6 +36,8 @@ search_internet:
|
||||||
search_depth: advanced
|
search_depth: advanced
|
||||||
include_raw_content: True
|
include_raw_content: True
|
||||||
max_results: 1
|
max_results: 1
|
||||||
|
zhipu_search:
|
||||||
|
zhipu_api_key: 'e2bdc39618624fd782ebcd721185645c.pcvcrTPFT69Jda8B'
|
||||||
top_k: 5
|
top_k: 5
|
||||||
verbose: Origin
|
verbose: Origin
|
||||||
conclude_prompt: "<指令>这是搜索到的互联网信息,请你根据这些信息进行提取并有调理,简洁的回答问题。如果无法从中得到答案,请说 “无法搜索到能回答问题的内容”。
|
conclude_prompt: "<指令>这是搜索到的互联网信息,请你根据这些信息进行提取并有调理,简洁的回答问题。如果无法从中得到答案,请说 “无法搜索到能回答问题的内容”。
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
|
import uuid
|
||||||
from typing import Dict, List
|
from typing import Dict, List
|
||||||
|
|
||||||
|
import requests
|
||||||
from langchain.docstore.document import Document
|
from langchain.docstore.document import Document
|
||||||
from langchain.text_splitter import RecursiveCharacterTextSplitter
|
from langchain.text_splitter import RecursiveCharacterTextSplitter
|
||||||
from langchain.utilities.bing_search import BingSearchAPIWrapper
|
from langchain.utilities.bing_search import BingSearchAPIWrapper
|
||||||
|
|
@ -107,15 +109,42 @@ def tavily_search(text, config, top_k):
|
||||||
# print("=== 完整搜索返回值 ===")
|
# print("=== 完整搜索返回值 ===")
|
||||||
# print(search_results)
|
# print(search_results)
|
||||||
return 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 = {
|
SEARCH_ENGINES = {
|
||||||
"bing": bing_search,
|
"bing": bing_search,
|
||||||
"duckduckgo": duckduckgo_search,
|
"duckduckgo": duckduckgo_search,
|
||||||
"metaphor": metaphor_search,
|
"metaphor": metaphor_search,
|
||||||
"searx": searx_search,
|
"searx": searx_search,
|
||||||
"tavily": tavily_search
|
"tavily": tavily_search,
|
||||||
|
"zhipu_search": zhipu_search
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# tavily的解析
|
# tavily的解析
|
||||||
# def search_result2docs_tavily(search_results) -> List[Document]:
|
# def search_result2docs_tavily(search_results) -> List[Document]:
|
||||||
# docs = []
|
# docs = []
|
||||||
|
|
@ -132,6 +161,17 @@ SEARCH_ENGINES = {
|
||||||
|
|
||||||
def search_result2docs(search_results, engine_name) -> List[Document]:
|
def search_result2docs(search_results, engine_name) -> List[Document]:
|
||||||
docs = []
|
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"
|
page_contents_key = "snippet" if engine_name != "tavily" else "content"
|
||||||
metadata_key = "link" if engine_name != "tavily" else "url"
|
metadata_key = "link" if engine_name != "tavily" else "url"
|
||||||
for result in search_results:
|
for result in search_results:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue