生物科技公司珠海贝斯昂科获近亿元天使轮融资
06-18
简介LLM的基本用法是text in -> text out,输出是文本。但很多时候,我们希望能够以固定的格式输出,以便能够解析为结构化数据并传递给后续的处理逻辑。
在OpenAI发布函数调用之前,我们可能会使用文本输入,要求LLM在Prompt中格式化输出,或者传递LangChain框架提供的Parsers相关抽象。现在,OpenAI提供了函数调用,用于将LLM的输出格式化为函数调用所需的参数。
函数调用简介简单来说,函数调用就是根据(自定义)函数调用所需的参数,输出可识别的格式化输出。在 API 调用中,我们可以描述一个函数(函数名称、参数等),并让模型智能地选择输出一个包含调用一个或多个函数参数的 JSON 对象。
聊天完成 API 不直接调用函数;它只生成 JSON。我们可以在代码中使用这个 JSON 对象来调用我们描述的函数。
例如:我们想要构建一个电子邮件助手,可以根据用户输入发送电子邮件。用户的输入类似于“请发送电子邮件至xxx@.com,内容为:请参加明天上午9:00在学校礼堂举行的会议”。
发送邮件需要调用外部API,通常会封装在代码中,参数如send_email(to: string, body: string)。如您所见,send_email(to: string, body: string) 需要两个参数:收件人和电子邮件内容正文。
这两个参数需要用户输入才能提取。我们描述 send_email(to: string, body: string) 并将其传递给 Chat Completions API。
其返回内容将包含以下内容: 代码语言:javascript copy function=Function(arguments='{"to": "xxx@.com", "body": "请明天上??午9:00到学校礼堂参加会议"}', name='send_email') 您可以看到 OpenAI 从用户的文本输入中提取了调用 send_email 所需的参数。收件人和电子邮件内容正文以 JSON 形式分配给参数字段。
函数调用使用流程 下面以查询指定城市指定日期的天气为例介绍函数调用使用流程。天气查询使用高德地图的API。
定义函数代码语言:javascript copy def get_weather(city, date): base_url = "< api_key = os.getenv("AMAP_API_KEY") # AMAP API的API-KEY是从环境变量中获取的 params = { 'key': api_key, 'city': city, 'extensions': 'base', # 根据需要选择 'base' 或 'all' 'output': 'json', 'date': date # 指定日期中的日期格式:01-01 } 尝试:response = requests.get(base_url, params=params) data = response.json() logger.info(data) if data['status'] == '1': Weather_info = data[ 'lives'][0 ] # 如果选择了 'base' 扩展,则使用 'lives';如果选择 'all' 扩展,则使用 'forecasts' # logger.debug(f"City: {weather_info['city') ]}") # logger.debug(f "日期: {date}") # logger.debug(f"天气: {weather_info['weather']}")# logger.debug(f"温度:{weather_info['温度']} ℃") # logger.debug(f"风力:{weather_info['windpower']} 等级") return json.dumps(weather_info) else: print ("查询天气信息失败,错误代码:" + data['infocode']) except Exception as e: print("查询天气信息时出错:" + str(e)) 是 OpenAI 的 API 描述函数调用支持以数组形式传入多个函数描述代码语言:javascript copy tools = [ { "type": "function", "function": { "name": "get_weather", "description": "查询指定城市、指定日期的天气状况", " parameters": { "type": "object", "properties": { "city": { "type": "string", "description": "要查询的城市名称,如:北京", }, # "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}, "date": { "type": "string", "description": "需要查询的日期,例如:11-23",} }, "required": ["city", "date"], }, }, } ]completions API 以 JSON 格式提取参数 代码语言:javascript copy client = OpenAI()## 我们需要结合用户的输入 通过向OpenAI提取函数调用所需的参数 messages = [ { "role": "user", "content": "How is the Weather in Shen on December 1st" } ]### 第一次调用Chat Completions API,提取参数response = client.chat.completions.create( model="gpt-3.5-turbo-", messages=messages, tools=tools, tool_choice="auto", # auto 是默认值,但我们会明确表示 )response_message = response.choices[0].messagetool_calls = response_message.tool_calls # 包含函数调用所需的信息。响应中的tool_calls包括与我们描述的函数相关的信息以及所需的参数。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-18
06-17
06-08
06-06
06-17
06-18
06-18
06-17
最新文章
【玩转GPU】ControlNet初学者生存指南
【实战】获取小程序中用户的城市信息(附源码)
包雪雪简单介绍Vue.js:开学
Go进阶:使用Gin框架简单实现服务端渲染
线程池介绍及实际案例分享
JMeter 注释 18 - JMeter 常用配置组件介绍
基于Sentry的大数据权限解决方案
【云+社区年度征文集】GPE监控介绍及使用