Function Call实践(一)——调用国内大模型测试 #126
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#126
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?
Function Call实践的学习流程仍然是从调用国内外大模型API进行大模型测试开始的。由于原理类似,而我们的平台环境只方便用国内大模型API进行测试,这里就对国内大模型API调用流程和代码进行一下分析。
Function Call:
函数调用功能可以增强模型推理效果或进行其他外部操作,包括信息检索、数据库操作、知识图谱搜索与推理、操作系统、触发外部操作等工具调用场景。
在ChatGLM中,tools 是内容生成 API 中的可选参数,用于向模型提供函数定义。通过此参数,模型能够生成符合用户所提供规范的函数参数。(在ChatGPT中也兼容tools参数,但更多的使用functions参数。)** 请注意,API 实际上不会执行任何函数调用,仅返回调用函数所需要的参数。开发者可以利用模型输出的参数在应用中执行函数调用。
步骤:
在 tools 参数中,如果填写了 functions 参数,则默认情况下模型将决定何时适合使用其中一个函数。 如果要控制模型如何选择函数调用,需要设置 tool_choice 参数。参数默认值为auto,此时模型根据上下文信息自行选择是否返回函数调用。将其设置为 {“name”: “your_function_name”} 时,可以强制 API 返回特定函数的调用。还可以通过将 tool_choice 参数设置为 “none” 来强制 API 不返回任何函数的调用。目前函数调用仅支持 auto 模式。
首先将所需的函数实现;
随后定义处理 Function call 的函数即可,具体流程为:
调用GLM4-plus
了解Function Call运行流程后,我们对调用GLM4-plus的代码进行分析。
设置网络代理;
定义模型可读的tools,zhipu不兼容functions,需要使用tools;
即使用Chat Completion接口向模型描述外部函数
初始化ZhipuAI,调用大模型,让大模型指导调用哪个function以及输入的参数是什么;
这里的“指导”即大模型会根据tools自动选择function并识别输入的参数;输出结果为:
调用大模型,查看结果
这一步就是之前的与模型交互,触发模型对函数的调用;
使用大模型组织语言将结果以自然语言返回
这一步也就是之前的****处理函数调用结果,根据模型返回参数,调用对应的函数;
调用函数返回结果后构造tool message,再次调用模型,将函数结果输入模型;模型会将函数调用结果以自然语言格式返回给用户。
总的来说这个其实类似于教程吧,但是第一次接触很多地方没有理解,这里结合zhipu:function call梳理了一下。