2. Pipe 和 Tools:
1) Python版本
llm_with_tools = llm.bind_tools([add])
chain = chat_prompt_template | llm_with_tools
resp = chain.invoke(input={"role": "计算", "domain": "数学计算", "question": "使用工具计算:100+100=?"})
2)Node版本,需要给system prompt 传入工具描述
export const systemMessagePromptTemplate =
ChatMessagePromptTemplate.fromTemplate(
'你是一位{role}专家,擅长回答{domain}领域相关问题。你可以使用以下工具:\n${toolDescriptions}.',
'system',
);
export const userMessagePromptTemplate = ChatMessagePromptTemplate.fromTemplate(
'用户的问题:{question}',
'user',
);
export const chatPromptTemplate = ChatPromptTemplate.fromMessages([
systemMessagePromptTemplate,
userMessagePromptTemplate,
]);
const tools = [adderTool];
export const llmWithTools = llm.bindTools(tools);
export const chain = chatPromptTemplate.pipe(llmWithTools);
const response = await chain.invoke({
role: '计算',
domain: '数学计算',
// 加入工具描述
toolDescriptions: tools
.map((tool) => `${tool.name}: ${tool.description}`)
.join('\n'),
question: '使用工具计算:100+100=?',
});