GPT 的能力很强,但是很多人不知道如何去使用,如何去落地到自己的业务系统
现在 OpenAI 开发了两个能力 Actions,Function Calling。
GPT 通过这两个能力与外部世界打通。
本文主要介绍 Function Calling
原理
1 .业务系统先拿到用户的输入
2.应用系统构建一个 prompt, 以及一个 function 的定义喂给大模型
3.大模型判断是否需要调用函数,
3.1 不需要调用函数,大模型直接回答问题了
3.2 需要调用函数,就返回一个调用说明,里面包含调用的参数给应用系统
4. 应用系统拿到大模型返回的函数调用说明,调用函数获取到结果
5. 应用系统将调用结果构建一个 prompt 给大模型
6. 大模型输出自然语言经过应用系统返回给用户
整体的过程如下图所示:

示例:
先定义几个工具方法
print_json 是为了打印参数用于调试
get_completion:定义了几个函数,供大模型判断是否需要调用
fbnq:是用户自己定义的一个函数
from openai import OpenAI
import json
client = OpenAI(api_key="YOUR KEY")
def print_json(data):
"""
打印参数。如果参数是有结构的(如字典或列表),则以格式化的 JSON 形式打印;
否则,直接打印该值。
"""
if hasattr(data, 'model_dump_json'):
data = json.loads(data.model_dump_json())
if isinstance(data, list):
for item in data:
print_json(item)
elif isinstance(data, dict):
print(json.dumps(
data,
indent=4,
ensure_ascii=False
))
else:
print(data)
def get_comletion(messages, model="gpt-3.5-turbo"):
response = client.chat.completions.create(
model=model,
messages=messages,
temperature=0.7,
tools=[ # 用 JSON 描述函数,可以定义多个,由大模型决定调用或者不调用
{
"type": "function",
"function": {
"name": "sum",
"description": "加法器,计算一组数据的和",
"parameters": {
"type": "array",
"items": {
"type": "number"
}
}
}
},
{
"type": "function",
"function": {


516

被折叠的 条评论
为什么被折叠?



