You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为LangChain Agent定义支持多输入的自定义模型评分工具?

LangChain多输入工具优化方案

不用再靠逗号分隔字符串传递多参数,LangChain支持通过Pydantic模型定义工具的多输入参数,这种方式更规范、容错性更强,还能让LLM自动识别并传递正确的参数。

实现步骤

  1. 定义Pydantic参数模型,明确工具需要的输入字段
  2. 基于该模型重新定义工具
  3. 调整llm_model_score函数,直接接收拆分后的参数

修改后的完整代码示例

from langchain.agents import AgentExecutor, create_structured_chat_agent
from langchain.tools import Tool
from langchain.pydantic_v1 import BaseModel, Field
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI

# 1. 定义Pydantic参数模型,明确两个输入字段
class ScoreToolInput(BaseModel):
    test_data_path: str = Field(description="测试数据集的文件路径")
    model_path: str = Field(description="预训练模型的文件路径")

# 2. 调整评分函数,直接接收拆分后的参数
def llm_model_score(test_data_path: str, model_path: str) -> str:
    # 这里替换成你的实际准确率计算逻辑
    accuracy = 0.92  # 模拟计算结果
    return f"模型在测试集上的准确率为:{accuracy:.2%}"

# 3. 基于Pydantic模型定义多输入工具
score_tool = Tool.from_function(
    func=llm_model_score,
    name="model_score_calculator",
    description="计算预训练模型在指定测试集上的准确率,需要传入测试数据路径和模型路径两个参数",
    args_schema=ScoreToolInput  # 绑定参数模型
)

# 初始化LLM和Agent
llm = ChatOpenAI(temperature=0, model="gpt-3.5-turbo")
prompt = ChatPromptTemplate.from_messages([
    ("system", "你是专业的模型评估助手,使用提供的工具完成任务"),
    ("user", "{input}"),
    ("assistant", "{agent_scratchpad}")
])

tools = [score_tool]
agent = create_structured_chat_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

# 测试调用
result = agent_executor.invoke({
    "input": "帮我计算/data/test_set.json路径下的测试集,对/models/bert_base模型的准确率"
})
print(result["output"])

优势说明

  • 避免了路径含逗号导致的解析错误问题
  • 参数定义清晰,LLM能更准确地理解需要传递的输入
  • 代码可读性和可维护性更强,后续新增参数也更方便

内容的提问来源于stack exchange,提问作者user3476463

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 10:32:40