输入“/”快速插入内容

工具调用

2024年7月25日修改
2023年11月7日创建
本章节将带领开发者学习如何使用ChatGLM3-6B来实现工具调用的功能。
请配合以下代码库中微调部分代码进行上手练习
什么是工具调用
大模型虽然强大,但是由于训练的时间和语料限制。大模型通常会存在以下问题:
1.
只能获取训练数据集中有的事件和内容,这意味着大模型不具备访问最新资料的能力。
2.
ChatGLM3-6B模型以通用语料训练为主,因此,缺少专业领域的知识。
3.
ChatGLM3-6B体量较小,虽然拥有较强的数学,英语等能力,但仍然无法与GPT4等大模型进行抗衡,因此,会出现数学计算不准确等问题。
这时候,通过给大模型加上“四肢“,让大模型学会使用工具,这些问题将迎刃而解。
例如,我们通过编写计算器插件,使用Python的eval()验证功能,或者numexpr.evaluate() 等功能,将能有效的辅助ChatGLM3-6B进行计算。模型仅需要告诉插件计算的内容,由工具完成计算,并返回大模型,大模型将答案进行整合输出,便可以得到正确的答案。
如果我们编写了一个互联网插件,则可以解决ChatGLM3-6B知识不够全面的问题。ChatGLM3-6B将可以通过互联网插件访问互联网,来获取最新信息,成为新闻助手等高效生产工具。
如何进行工具调用
设计工具雏形
首先,应该确定你需要使用的工具,并准备好描述信息。
例如,我现在想准备这两个工具:
代码块
工具一:track
工具的功能:负责追踪我指定的股票的实时价格
工具的输入:需要追踪的股票代码
输入的类型:参数symbol,为股票代码,str类型
工具二:text-to-speech
工具的功能:将文本转换为语音
工具的输入:需要转换成语音的文本,要用的语音类型(男生,女生),语音的速度
输入的类型:
1. 参数text,为需要转换成语音的文本
2. 参数voice,为要使用的语音类型(男声、女声等)
3. 参数speed,为语音的速度(快、中等、慢等)
构建描述信息
接着,我们根据我们的想法,准备好要构建的数据的描述信息
代码块
tools = [
{
"name": "track",
"description": "追踪指定股票的实时价格",
"parameters": {
"type": "object",
"properties": {
"symbol": {
"description": "需要追踪的股票代码"
}
},
"required": ['symbol']
}
},
{
"name": "text-to-speech",
"description": "将文本转换为语音",
"parameters": {
"type": "object",
"properties": {
"text": {
"description": "需要转换成语音的文本"
},
"voice": {
"description": "要使用的语音类型(男声、女声等)"
},
"speed": {
"description": "语音的速度(快、中等、慢等)"
}
},
"required": ['text']
}
}
]
system_info = {
"role": "system",
"content": "Answer the following questions as best as you can. You have access to the following tools:",
"tools": tools
}