Merge pull request #996 from SuanmoSuanyangTechnology/feature/agent-tool_xjn
fix(app_chat_service,draft_run_service)
This commit is contained in:
@@ -107,23 +107,6 @@ class AppChatService:
|
|||||||
# 获取模型参数
|
# 获取模型参数
|
||||||
model_parameters = config.model_parameters
|
model_parameters = config.model_parameters
|
||||||
|
|
||||||
# 创建 LangChain Agent
|
|
||||||
agent = LangChainAgent(
|
|
||||||
model_name=api_key_obj.model_name,
|
|
||||||
api_key=api_key_obj.api_key,
|
|
||||||
provider=api_key_obj.provider,
|
|
||||||
api_base=api_key_obj.api_base,
|
|
||||||
is_omni=api_key_obj.is_omni,
|
|
||||||
temperature=model_parameters.get("temperature", 0.7),
|
|
||||||
max_tokens=model_parameters.get("max_tokens", 2000),
|
|
||||||
system_prompt=system_prompt,
|
|
||||||
tools=tools,
|
|
||||||
deep_thinking=model_parameters.get("deep_thinking", False),
|
|
||||||
thinking_budget_tokens=model_parameters.get("thinking_budget_tokens"),
|
|
||||||
json_output=model_parameters.get("json_output", False),
|
|
||||||
capability=api_key_obj.capability or [],
|
|
||||||
)
|
|
||||||
|
|
||||||
model_info = ModelInfo(
|
model_info = ModelInfo(
|
||||||
model_name=api_key_obj.model_name,
|
model_name=api_key_obj.model_name,
|
||||||
provider=api_key_obj.provider,
|
provider=api_key_obj.provider,
|
||||||
@@ -177,16 +160,27 @@ class AppChatService:
|
|||||||
if doc_img_recognition and "vision" in (api_key_obj.capability or []) and any(
|
if doc_img_recognition and "vision" in (api_key_obj.capability or []) and any(
|
||||||
f.type == FileType.DOCUMENT for f in files
|
f.type == FileType.DOCUMENT for f in files
|
||||||
):
|
):
|
||||||
from langchain.agents import create_agent
|
system_prompt += (
|
||||||
agent.system_prompt += (
|
"\n\n文档文字中包含图片位置标记如 [图片 第2页 第1张]: http://...,请在回答中用 Markdown 格式  展示对应图片。"
|
||||||
"\n\n文档中包含图片,图片位置已在文本中以 [第N页 第M张图片]: URL 标记。"
|
|
||||||
"请在回答中用 Markdown 格式  展示相关图片,做到图文并茂。"
|
|
||||||
)
|
|
||||||
agent.agent = create_agent(
|
|
||||||
model=agent.llm,
|
|
||||||
tools=agent._wrap_tools_with_tracking(agent.tools) if agent.tools else None,
|
|
||||||
system_prompt=agent.system_prompt
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# 创建 LangChain Agent
|
||||||
|
agent = LangChainAgent(
|
||||||
|
model_name=api_key_obj.model_name,
|
||||||
|
api_key=api_key_obj.api_key,
|
||||||
|
provider=api_key_obj.provider,
|
||||||
|
api_base=api_key_obj.api_base,
|
||||||
|
is_omni=api_key_obj.is_omni,
|
||||||
|
temperature=model_parameters.get("temperature", 0.7),
|
||||||
|
max_tokens=model_parameters.get("max_tokens", 2000),
|
||||||
|
system_prompt=system_prompt,
|
||||||
|
tools=tools,
|
||||||
|
deep_thinking=model_parameters.get("deep_thinking", False),
|
||||||
|
thinking_budget_tokens=model_parameters.get("thinking_budget_tokens"),
|
||||||
|
json_output=model_parameters.get("json_output", False),
|
||||||
|
capability=api_key_obj.capability or [],
|
||||||
|
)
|
||||||
|
|
||||||
# 为需要运行时上下文的工具注入上下文
|
# 为需要运行时上下文的工具注入上下文
|
||||||
for t in tools:
|
for t in tools:
|
||||||
if hasattr(t, 'tool_instance') and hasattr(t.tool_instance, 'set_runtime_context'):
|
if hasattr(t, 'tool_instance') and hasattr(t.tool_instance, 'set_runtime_context'):
|
||||||
|
|||||||
@@ -595,23 +595,6 @@ class AgentRunService:
|
|||||||
)
|
)
|
||||||
tools.extend(memory_tools)
|
tools.extend(memory_tools)
|
||||||
|
|
||||||
# 4. 创建 LangChain Agent
|
|
||||||
agent = LangChainAgent(
|
|
||||||
model_name=api_key_config["model_name"],
|
|
||||||
api_key=api_key_config["api_key"],
|
|
||||||
provider=api_key_config.get("provider", "openai"),
|
|
||||||
api_base=api_key_config.get("api_base"),
|
|
||||||
is_omni=api_key_config.get("is_omni", False),
|
|
||||||
temperature=effective_params.get("temperature", 0.7),
|
|
||||||
max_tokens=effective_params.get("max_tokens", 2000),
|
|
||||||
system_prompt=system_prompt,
|
|
||||||
tools=tools,
|
|
||||||
deep_thinking=effective_params.get("deep_thinking", False),
|
|
||||||
thinking_budget_tokens=effective_params.get("thinking_budget_tokens"),
|
|
||||||
json_output=effective_params.get("json_output", False),
|
|
||||||
capability=api_key_config.get("capability", []),
|
|
||||||
)
|
|
||||||
|
|
||||||
# 5. 处理会话ID(创建或验证),新会话时写入开场白
|
# 5. 处理会话ID(创建或验证),新会话时写入开场白
|
||||||
is_new_conversation = not conversation_id
|
is_new_conversation = not conversation_id
|
||||||
opening, suggested_questions = None, None
|
opening, suggested_questions = None, None
|
||||||
@@ -666,16 +649,26 @@ class AgentRunService:
|
|||||||
and any(f.type == FileType.DOCUMENT for f in files)
|
and any(f.type == FileType.DOCUMENT for f in files)
|
||||||
)
|
)
|
||||||
if has_doc_with_images:
|
if has_doc_with_images:
|
||||||
agent.system_prompt += (
|
system_prompt += (
|
||||||
"\n\n文档中包含图片,图片位置已在文本中以 [第N页 第M张图片]: URL 标记。"
|
"\n\n文档文字中包含图片位置标记如 [图片 第2页 第1张]: http://...,请在回答中用 Markdown 格式  展示对应图片。"
|
||||||
"请在回答中用 Markdown 格式  展示相关图片,做到图文并茂。"
|
|
||||||
)
|
|
||||||
# 重建 agent graph 以使新 system_prompt 生效
|
|
||||||
agent.agent = create_agent(
|
|
||||||
model=agent.llm,
|
|
||||||
tools=agent._wrap_tools_with_tracking(agent.tools) if agent.tools else None,
|
|
||||||
system_prompt=agent.system_prompt
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
agent = LangChainAgent(
|
||||||
|
model_name=api_key_config["model_name"],
|
||||||
|
api_key=api_key_config["api_key"],
|
||||||
|
provider=api_key_config.get("provider", "openai"),
|
||||||
|
api_base=api_key_config.get("api_base"),
|
||||||
|
is_omni=api_key_config.get("is_omni", False),
|
||||||
|
temperature=effective_params.get("temperature", 0.7),
|
||||||
|
max_tokens=effective_params.get("max_tokens", 2000),
|
||||||
|
system_prompt=system_prompt,
|
||||||
|
tools=tools,
|
||||||
|
deep_thinking=effective_params.get("deep_thinking", False),
|
||||||
|
thinking_budget_tokens=effective_params.get("thinking_budget_tokens"),
|
||||||
|
json_output=effective_params.get("json_output", False),
|
||||||
|
capability=api_key_config.get("capability", []),
|
||||||
|
)
|
||||||
|
|
||||||
# 为需要运行时上下文的工具注入上下文
|
# 为需要运行时上下文的工具注入上下文
|
||||||
for t in tools:
|
for t in tools:
|
||||||
if hasattr(t, 'tool_instance') and hasattr(t.tool_instance, 'set_runtime_context'):
|
if hasattr(t, 'tool_instance') and hasattr(t.tool_instance, 'set_runtime_context'):
|
||||||
|
|||||||
Reference in New Issue
Block a user