2023-10-04 12:05:46 +08:00
|
|
|
|
import json
|
2023-10-25 08:30:23 +08:00
|
|
|
|
from server.chat.search_engine_chat import search_engine_chat
|
2023-10-27 13:14:48 +08:00
|
|
|
|
from configs import VECTOR_SEARCH_TOP_K, MAX_TOKENS
|
2023-10-04 12:05:46 +08:00
|
|
|
|
import asyncio
|
2023-10-18 15:19:02 +08:00
|
|
|
|
from server.agent import model_container
|
2023-10-27 22:53:43 +08:00
|
|
|
|
from pydantic import BaseModel, Field
|
2023-10-04 12:05:46 +08:00
|
|
|
|
|
|
|
|
|
|
async def search_engine_iter(query: str):
|
|
|
|
|
|
response = await search_engine_chat(query=query,
|
2023-10-18 15:19:02 +08:00
|
|
|
|
search_engine_name="bing", # 这里切换搜索引擎
|
|
|
|
|
|
model_name=model_container.MODEL.model_name,
|
|
|
|
|
|
temperature=0.01, # Agent 搜索互联网的时候,温度设置为0.01
|
2023-10-04 12:05:46 +08:00
|
|
|
|
history=[],
|
|
|
|
|
|
top_k = VECTOR_SEARCH_TOP_K,
|
2023-10-27 13:14:48 +08:00
|
|
|
|
max_tokens= MAX_TOKENS,
|
2023-10-18 15:19:02 +08:00
|
|
|
|
prompt_name = "default",
|
2023-10-04 12:05:46 +08:00
|
|
|
|
stream=False)
|
|
|
|
|
|
|
|
|
|
|
|
contents = ""
|
2023-10-18 15:19:02 +08:00
|
|
|
|
|
2023-10-04 12:05:46 +08:00
|
|
|
|
async for data in response.body_iterator: # 这里的data是一个json字符串
|
|
|
|
|
|
data = json.loads(data)
|
|
|
|
|
|
contents = data["answer"]
|
|
|
|
|
|
docs = data["docs"]
|
2023-10-18 15:19:02 +08:00
|
|
|
|
|
2023-10-04 12:05:46 +08:00
|
|
|
|
return contents
|
|
|
|
|
|
|
|
|
|
|
|
def search_internet(query: str):
|
|
|
|
|
|
return asyncio.run(search_engine_iter(query))
|
|
|
|
|
|
|
2023-10-27 22:53:43 +08:00
|
|
|
|
class SearchInternetInput(BaseModel):
|
2023-11-12 16:45:50 +08:00
|
|
|
|
location: str = Field(description="Query for Internet search")
|
2023-10-27 22:53:43 +08:00
|
|
|
|
|
2023-10-04 12:05:46 +08:00
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
2023-10-18 15:19:02 +08:00
|
|
|
|
result = search_internet("今天星期几")
|
2023-10-04 12:05:46 +08:00
|
|
|
|
print("答案:",result)
|