feat(context): 为大语言模型提供过去网页搜索的上下文记忆
此更改使聊天机器人能够记住并引用过去网页搜索的相关信息,从而显著提高响应质量和连贯性。 系统不再将每个查询视为孤立事件,而是在生成新响应之前,对之前的 `web_search` 结果缓存进行向量相似度搜索。如果发现过去的相关信息,会自动作为“相关历史搜索结果”注入到大语言模型的提示中。 这使模型能够立即访问相关背景信息,避免对已经讨论过的主题重复搜索。 为了支持这一新功能: - 对 `web_search` 工具的提示进行了改写,以通过确保结果被高效缓存和调用,鼓励大语言模型更频繁地使用它。 - 重要工具结果(如网页搜索)的预览长度已增加
This commit is contained in:
@@ -32,15 +32,35 @@ class ToolCallRecord:
|
||||
"""后处理:生成结果预览"""
|
||||
if self.result and not self.result_preview:
|
||||
content = self.result.get("content", "")
|
||||
# 联网搜索等重要工具不截断结果
|
||||
no_truncate_tools = {"web_search", "web_surfing", "knowledge_search"}
|
||||
should_truncate = self.tool_name not in no_truncate_tools
|
||||
max_length = 500 if should_truncate else 10000 # 联网搜索给更大的限制
|
||||
|
||||
if isinstance(content, str):
|
||||
self.result_preview = content[:500] + ("..." if len(content) > 500 else "")
|
||||
if len(content) > max_length:
|
||||
self.result_preview = content[:max_length] + "..."
|
||||
else:
|
||||
self.result_preview = content
|
||||
elif isinstance(content, list | dict):
|
||||
try:
|
||||
self.result_preview = orjson.dumps(content, option=orjson.OPT_NON_STR_KEYS).decode("utf-8")[:500] + "..."
|
||||
json_str = orjson.dumps(content, option=orjson.OPT_NON_STR_KEYS).decode("utf-8")
|
||||
if len(json_str) > max_length:
|
||||
self.result_preview = json_str[:max_length] + "..."
|
||||
else:
|
||||
self.result_preview = json_str
|
||||
except Exception:
|
||||
self.result_preview = str(content)[:500] + "..."
|
||||
str_content = str(content)
|
||||
if len(str_content) > max_length:
|
||||
self.result_preview = str_content[:max_length] + "..."
|
||||
else:
|
||||
self.result_preview = str_content
|
||||
else:
|
||||
self.result_preview = str(content)[:500] + "..."
|
||||
str_content = str(content)
|
||||
if len(str_content) > max_length:
|
||||
self.result_preview = str_content[:max_length] + "..."
|
||||
else:
|
||||
self.result_preview = str_content
|
||||
|
||||
|
||||
class StreamToolHistoryManager:
|
||||
|
||||
Reference in New Issue
Block a user