Function Call实践(二)——本地开源模型部署部署使用 #127
Labels
No Label
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: HswOAuth/llm_course#127
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
使用fastchat来启动模型服务
这里与之前的实验类似,使用fastchat框架,完成controllor、worker和api_server的部署,此时模型就可以通过openai的api格式调用。、
安装openai并调用测试
这里用国内的镜像安装。
函数调用测试
完成网络配置后,首先用本地llama模型调用测试。
运行结果:
再尝试用GLM-4进行测试:
运行结果:
可以看到都取得了正确的结果,代码能正常的运行。
代码理解
这段代码定义了一个简单的计算器工具,并通过两个代理(assistant 和 user_proxy)实现交互。
calculator
接收两个整数和一个操作符,支持加、减、乘、除运算。config_list
定义了一个包含模型信息的字典,包括模型名称、API 地址和 API 密钥。assistant
是一个可交互的代理,配置了系统消息以帮助用户进行简单计算,并注册了calculator
工具。user_proxy
用于与助手代理交互并执行工具调用,定义了终止消息的判定条件。user_proxy.initiate_chat
发起对助手的询问,计算表达式(44232 + 13312 / (232 - 32)) * 5
的结果,并清除历史记录。function call的使用:
assistant
中,使用assistant.register_for_llm
将calculator
函数注册为一个工具。这意味着助手可以调用这个函数来处理用户的请求。user_proxy
中,使用user_proxy.register_for_execution
注册同样的calculator
函数。这使得用户代理可以在交互过程中调用计算器功能。user_proxy.initiate_chat
被调用时,内部逻辑会解析用户输入的表达式, 在用户输入的表达式被解析为可计算的形式时,会调用已注册的calculator
函数来执行实际计算(这通常发生在解析器识别到用户的请求需要特定的计算操作,且相应的计算函数已经注册并能够处理该类型的请求时。)。这种机制允许助手代理和用户代理之间进行动态函数调用。这里明显没有之前调用api-key实现大模型时候的function call注册详细,我感觉应该是做了什么封装,省去了一大堆的内容吧。不然确实次次都要自己写tools,再自己写response搞格式让模型看看要不要调用函数,再写代码传参数改格式,再把结果转回去自然语言,确实好麻烦。之前那个应该是详细解释。