2026-04-02 11:36:05 +08:00
|
|
|
from datetime import datetime
|
|
|
|
|
import logging
|
|
|
|
|
import requests
|
|
|
|
|
# import uuid
|
|
|
|
|
|
|
|
|
|
from configs.model_config import LLM_MODELS
|
|
|
|
|
from server.chat.policy_fun_iast import get_llm_model_response
|
|
|
|
|
|
|
|
|
|
api_key = "2b35424a76188ea96558f9631890ecd3.Wl9stbNr8TJ9L5PJ"
|
|
|
|
|
|
|
|
|
|
class ZhipuSearchAPIWrapper:
|
|
|
|
|
# def zhipu_search(self, origin_query):
|
|
|
|
|
# search_query = get_llm_model_response(
|
|
|
|
|
# strategy_name="zhipu_search_rewrite",
|
|
|
|
|
# llm_model_name=LLM_MODELS[0],
|
|
|
|
|
# template_prompt_name="zhipu_search_rewrite",
|
|
|
|
|
# prompt_param_dict={"input": origin_query, "year": datetime.now().strftime("%Y")},
|
|
|
|
|
# temperature=0.3,
|
|
|
|
|
# max_tokens=512
|
|
|
|
|
# )
|
|
|
|
|
# logging.info(f"Zhipu检索内容:{search_query}")
|
|
|
|
|
# msg = [
|
|
|
|
|
# {
|
|
|
|
|
# "role": "user",
|
|
|
|
|
# "content": search_query
|
|
|
|
|
# }
|
|
|
|
|
# ]
|
|
|
|
|
# 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
|
|
|
|
|
# }
|
|
|
|
|
|
|
|
|
|
# try:
|
|
|
|
|
# resp = requests.post(
|
|
|
|
|
# url,
|
|
|
|
|
# json=data,
|
|
|
|
|
# headers={'Authorization': api_key},
|
|
|
|
|
# timeout=300
|
|
|
|
|
# )
|
|
|
|
|
# resp.raise_for_status() # 检查请求是否成功
|
|
|
|
|
# resp_json = resp.json()
|
|
|
|
|
# except requests.exceptions.RequestException as e:
|
|
|
|
|
# print(f"请求错误: {e}")
|
|
|
|
|
# return []
|
|
|
|
|
|
|
|
|
|
# # 解析响应以提取 search_result
|
|
|
|
|
# search_results = []
|
|
|
|
|
# choices = resp_json.get('choices', [])
|
|
|
|
|
# for choice in choices:
|
|
|
|
|
# message = choice.get('message', {})
|
|
|
|
|
# tool_calls = message.get('tool_calls', [])
|
|
|
|
|
# for tool_call in tool_calls:
|
|
|
|
|
# if 'search_result' in tool_call:
|
|
|
|
|
# search_results.extend(tool_call['search_result'])
|
|
|
|
|
|
|
|
|
|
# return search_results[:7]
|
|
|
|
|
def zhipu_search(self, origin_query):
|
|
|
|
|
search_query = get_llm_model_response(
|
|
|
|
|
strategy_name="zhipu_search_rewrite",
|
|
|
|
|
llm_model_name=LLM_MODELS[0],
|
|
|
|
|
template_prompt_name="zhipu_search_rewrite",
|
|
|
|
|
prompt_param_dict={"input": origin_query, "year": datetime.now().strftime("%Y")},
|
|
|
|
|
temperature=0.3,
|
|
|
|
|
max_tokens=512
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
logging.info(f"Zhipu检索内容:{search_query}")
|
2026-04-20 15:59:11 +08:00
|
|
|
url = "http://118.196.92.255/searxng/search"
|
2026-04-07 15:02:54 +08:00
|
|
|
engines = "duckduckgo,bing"
|
2026-04-02 11:36:05 +08:00
|
|
|
data = {
|
|
|
|
|
"format":"json",
|
|
|
|
|
"q":search_query,
|
|
|
|
|
"engines":engines,
|
|
|
|
|
"limit":10
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
# resp = requests.post(
|
|
|
|
|
# url,
|
|
|
|
|
# json=data,
|
|
|
|
|
# timeout=5000
|
|
|
|
|
# )
|
|
|
|
|
resp = requests.get(
|
|
|
|
|
url,
|
|
|
|
|
params=data,
|
|
|
|
|
timeout=5000
|
|
|
|
|
)
|
|
|
|
|
resp.raise_for_status() # 检查请求是否成功
|
|
|
|
|
resp_json = resp.json()
|
|
|
|
|
except requests.exceptions.RequestException as e:
|
|
|
|
|
print(f"请求错误: {e}")
|
|
|
|
|
return []
|
|
|
|
|
|
|
|
|
|
# 解析响应以提取 search_result
|
|
|
|
|
search_results = []
|
|
|
|
|
choices = resp_json.get('results', [])
|
|
|
|
|
for choice in choices:
|
|
|
|
|
if 'publishedDate' in choice:
|
|
|
|
|
choice["content"] +=f"发布于{choice['publishedDate']}"
|
|
|
|
|
search_results.append(choice)
|
|
|
|
|
else:
|
|
|
|
|
search_results.append(choice)
|
|
|
|
|
# search_results.extend(choices)
|
|
|
|
|
return search_results[:7]
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
zhipu_search = ZhipuSearchAPIWrapper()
|
|
|
|
|
query = "粉末冶金产业技术创新战略联盟 粉末冶金领域关键词"
|
|
|
|
|
results = zhipu_search.zhipu_search(query)
|
|
|
|
|
if results:
|
|
|
|
|
print(results)
|
|
|
|
|
print(f"成功获取到 {len(results)} 个搜索结果")
|
|
|
|
|
else:
|
|
|
|
|
logging.info("没有找到任何搜索结果")
|