我们更需要一个能够根据用户提示词,自动选择对应工具的大模型,而不是在一个链里一次只能使用一个工具。这里用代码实现了,在langchian中如何从多个可选工具中,动态的使用工具。
注意事项:大模型生成的工具入参arguments结构可能会不稳定,导致出错。需要通过提示词去强化。比如代码中,我强化了“"arguments"键对应的值应该是所选函数的输入,必须是dict格式”这句提示词,之后就稳定了。
from langchain_core.output_parsers import JsonOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.tools import tool, render_text_description
from langchain_community.chat_models import ChatTongyi
from operator import itemgetter
@tool
def add(first_int: int, second_int: int) -> int:
"""将两个数相加。"""
return first_int + second_int
@tool
def exponentiate(base: int, exponent: int) -> int:
"""对底数求指数幂"""
return base ** exponent
@tool
def multiply(first_int: int, second_int: