大模型编程(3)让 AI 帮我调接口

简介: 这是大模型编程系列第三篇,分享学习某云大模型工程师ACA认证免费课程的笔记。本文通过订机票和查天气的例子,介绍了如何利用大模型API实现函数调用,解决实际业务需求。课程内容详实,推荐感兴趣的朋友点击底部链接查看原文,完全免费。通过这种方式,AI可以主动调用接口并返回结果,极大简化了开发流程。欢迎在评论区交流实现思路。

这是大模型编程系列的第三篇,也是我学习 某云大模型工程师ACA认证免费课程 的笔记,这课真不错,太香了必须强烈推荐👍🏻。对课程有兴趣请点击底部的查看原文。

上一篇里面我们实现了大模型API的循环调用调用,来完成我们实际的业务需求。

老板的需求

作为一个牛马,随时要接受老板的安排,今天老板早上说等会晚点帮我订一张机票,时间和地点我还没确定,等会确定了我和你说。
嘴上答应没问题,内心一万个不愿意,什么时候给我发消息啊,我那会一定在电脑前面吗,想到这点就烦,要是 AI 能做这事就好了。

AI 的实现 function call

订机票有点复杂了,换个简单的,参考 某云大模型工程师ACA认证免费课程 查天气吧。

我们知道大语言模型的本质概括来说是根据给定的文本预测下一个token。对我们来说,看似像在对大模型提问,但实际上是给了大模型一串提示文本,让它可以对后续的文本进行推理。(图看不懂可以先忽略)

image.png

具体可以学习这篇课程认识大模型

所以当我们问大模型今天会议室的空闲状态,今天的天气的时候,他是不知道的,但是我们是可以调用接口查询到的(先不考虑后面 RAG 的方案,假设要查天气只能通过接口查询,不能通过搜索网页查询)。

捋捋这个思路就是 最难的点就在于,如果大模型能主动调用接口,再把接口调用的结果整理之后返回给我们就好了。 如下:

image.png

还别说 openai 早给我们设计好了这样的插件机制,参考 function call 示例

程序设计的话,流程如下:

  1. 用户输入:用户向你的应用发送一条消息,比如 "北京今天天气怎样"。
  2. 处理用户请求:你的应用程序接收到这条消息后,可以使用 OpenAI 的 API 来解析用户的意图,并识别出他们想查询的是伦敦当天的天气情况。
  3. 函数调用 (Function Call):基于 OpenAI API 的响应,如果你的应用程序需要查询具体的天气数据,它可以调用预先定义好的函数,例如 get_weather(city: str),这个函数会使用第三方天气 API 来获取最新的天气信息。
  4. 获取天气信息:get_weather() 函数将向第三方天气 API 发送请求,传入城市名作为参数,并接收包含天气信息的响应。
  5. 整合信息并回应用户:一旦获得了天气信息,你的应用程序就可以格式化这些信息,并使用 OpenAI 的 API 生成一个自然语言的回答给用户,比如 "今天北京市的天气是雨天。请带好雨具,出行注意安全。"
from openai import OpenAI
import os
import json

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)

# 定义工具列表,模型在选择使用哪个工具时会参考工具的name和description
tools = [
    {
   
        "type": "function",
        "function": {
   
            "name": "get_current_weather",
            "description": "当你想查询指定城市的天气时非常有用。",
            "parameters": {
    
                "type": "object",
                "properties": {
   
                    # 查询天气时需要提供位置,因此参数设置为location
                    "location": {
   
                        "type": "string",
                        "description": "城市或县区,比如北京市、杭州市、余杭区等。"
                    }
                }
            },
            "required": [
                "location"
            ]
        }
    }
]

# 模拟天气查询工具。返回结果示例:“北京今天是雨天。”
def get_current_weather(location):
    return f"{location}今天是雨天。 "


# 封装模型响应函数
def get_response(messages):
    completion = client.chat.completions.create(
        model="qwen-plus",
        messages=messages,
        tools=tools
        )
    return completion.model_dump()

def call_with_messages():
    print('\n')
    messages = [
            {
   
                "content": input('请输入:'),  # 提问示例: "北京天气如何?"
                "role": "user"
            }
    ]
    print("-"*60)
    # 模型的第一轮调用
    i = 1
    first_response = get_response(messages)
    assistant_output = first_response['choices'][0]['message']
    print(f"\n第{i}轮大模型输出信息:{first_response}\n")

    # 如果不需要调用工具,则直接返回最终答案
    if assistant_output['tool_calls'] == None:  # 如果模型判断无需调用工具,则将assistant的回复直接打印出来,无需进行模型的第二轮调用
        print(f"无需调用工具,我可以直接回复:{assistant_output['content']}")
        return

    messages.append(assistant_output)

    # 如果判断需要调用查询天气工具,则运行查询天气工具
    if assistant_output['tool_calls'][0]['function']['name'] == 'get_current_weather':
        tool_info = {
   "name": "get_current_weather", "role":"tool"}
        # 提取位置参数信息
        location = json.loads(assistant_output['tool_calls'][0]['function']['arguments'])['location']
        tool_info['content'] = get_current_weather(location)
    print(f"工具输出信息:{tool_info['content']}\n")
    print("-"*60)
    messages.append(tool_info)
    assistant_output = get_response(messages)['choices'][0]['message']
    if  assistant_output['content'] is None:
        assistant_output['content'] = ""
    messages.append(assistant_output)
    i += 1
    print(f"第{i}轮大模型输出信息:{assistant_output}\n")
    print(f"最终答案:{assistant_output['content']}")

if __name__ == '__main__':
    call_with_messages()

里面有很多调试的信息,方便我们学习,比如第一轮对话会返回的数据如下

{
   
    "id": "chatcmpl-233f4cc2-3e69-9b97-b348-27ec1867d694",
    "choices": [
        {
   
            "finish_reason": "tool_calls",
            "index": 0,
            "logprobs": "None",
            "message": {
   
                "content": "",
                "refusal": "None",
                "role": "assistant",
                "audio": "None",
                "function_call": "None",
                "tool_calls": [
                    {
   
                        "id": "call_a53c36f740d14e1fb6fd80",
                        "function": {
   
                            "arguments": "{\"location\":\"北京市\"}",
                            "name": "get_current_weather"
                        },
                        "type": "function",
                        "index": 0
                    }
                ]
            }
        }
    ],
    "created": 1735797998,
    "model": "qwen-plus",
    "object": "chat.completion",
    "service_tier": "None",
    "system_fingerprint": "None",
    "usage": {
   
        "completion_tokens": 18,
        "prompt_tokens": 184,
        "total_tokens": 202,
        "completion_tokens_details": "None",
        "prompt_tokens_details": {
   
            "audio_tokens": "None",
            "cached_tokens": 0
        }
    }
}

也就是说告诉我们需要调用工具方法,并且已经帮我们把工具的参数已经组装好了,这也太神奇了‼️
我这里只是一些笔记,完整课程请点击底部的查看原文,完全免费的。

这个思路有了,AI 订机票不就依葫芦画瓢了吗?那也太简单了,你们评论区实现下吧。

目录
相关文章
|
26天前
|
人工智能 Java Serverless
阿里云函数计算助力AI大模型快速部署
随着人工智能技术的快速发展,AI大模型已经成为企业数字化转型的重要工具。然而,对于许多业务人员、开发者以及企业来说,探索和利用AI大模型仍然面临诸多挑战。业务人员可能缺乏编程技能,难以快速上手AI模型;开发者可能受限于GPU资源,无法高效构建和部署AI应用;企业则希望简化技术门槛,以更低的成本和更高的效率利用AI大模型。
111 12
|
7天前
|
机器学习/深度学习 人工智能 自动驾驶
企业内训|AI大模型在汽车行业的前沿应用研修-某汽车集团
本课程是TsingtaoAI为某汽车集团高级项目经理设计研发,课程全面系统地解析AI的发展历程、技术基础及其在汽车行业的深度应用。通过深入浅出的理论讲解、丰富的行业案例分析以及实战项目训练,学员将全面掌握机器学习、深度学习、NLP与CV等核心技术,了解自动驾驶、智能制造、车联网与智能营销等关键应用场景,洞悉AI技术对企业战略布局的深远影响。
136 97
|
12天前
|
机器学习/深度学习 人工智能 物联网
AI赋能大学计划·大模型技术与应用实战学生训练营——湖南大学站圆满结营
12月14日,由中国软件行业校园招聘与实习公共服务平台携手魔搭社区共同举办的AI赋能大学计划·大模型技术与产业趋势高校行AIGC项目实战营·湖南大学站圆满结营。
AI赋能大学计划·大模型技术与应用实战学生训练营——湖南大学站圆满结营
|
24天前
|
人工智能 安全 数据安全/隐私保护
文档智能 & RAG让AI大模型更懂业务测评
文档智能 & RAG让AI大模型更懂业务
148 74
|
6天前
|
人工智能 自然语言处理 测试技术
DeepSeek V3:DeepSeek 开源的最新多模态 AI 模型,编程能力超越Claude,生成速度提升至 60 TPS
DeepSeek V3 是深度求索公司开源的最新 AI 模型,采用混合专家架构,具备强大的编程和多语言处理能力,性能超越多个竞争对手。
151 4
DeepSeek V3:DeepSeek 开源的最新多模态 AI 模型,编程能力超越Claude,生成速度提升至 60 TPS
|
12天前
|
机器学习/深度学习 人工智能 智能设计
VisionFM:通用眼科 AI 大模型,具备眼科疾病诊断能力,展现出专家级别的准确性
VisionFM 是一个多模态多任务的视觉基础模型,专为通用眼科人工智能设计。通过预训练大量眼科图像,模型能够处理多种眼科成像模态,并在多种眼科任务中展现出专家级别的智能性和准确性。
55 4
VisionFM:通用眼科 AI 大模型,具备眼科疾病诊断能力,展现出专家级别的准确性
|
26天前
|
机器学习/深度学习 人工智能 自然语言处理
GLM-4V-Flash:智谱 AI 免费开放的图像理解大模型 API 接口
智谱AI推出的GLM-4V-Flash是一款专注于图像理解的免费开放大模型,提供API接口支持用户上传图片URL或Base64编码图片获取详细的图像描述。该模型通过深度学习和卷积神经网络技术,简化了图像分析流程,提高了开发效率,适用于内容审核、辅助视障人士、社交媒体、教育和电子商务等多个应用场景。
131 14
GLM-4V-Flash:智谱 AI 免费开放的图像理解大模型 API 接口
|
5天前
|
人工智能 自然语言处理 前端开发
三大行业案例:AI大模型+Agent实践全景
本文将从AI Agent和大模型的发展背景切入,结合51Talk、哈啰出行以及B站三个各具特色的行业案例,带你一窥事件驱动架构、RAG技术、人机协作流程,以及一整套行之有效的实操方法。具体包含内容有:51Talk如何让智能客服“主动进攻”,带来约课率、出席率双提升;哈啰出行如何由Copilot模式升级为Agent模式,并应用到客服、营销策略生成等多个业务场景;B站又是如何借力大模型与RAG方法,引爆了平台的高效内容检索和强互动用户体验。
78 5
|
24天前
|
机器学习/深度学习 人工智能 物联网
AI赋能大学计划·大模型技术与应用实战学生训练营——电子科技大学站圆满结营
12月05日,由中国软件行业校园招聘与实习公共服务平台携手阿里魔搭社区共同举办的AI赋能大学计划·大模型技术与产业趋势高校行AIGC项目实战营·电子科技大学站圆满结营。
AI赋能大学计划·大模型技术与应用实战学生训练营——电子科技大学站圆满结营
|
2天前
|
人工智能 供应链 安全
面向高效大模型推理的软硬协同加速技术 多元化 AI 硬件引入评测体系
本文介绍了AI硬件评测体系的三大核心方面:统一评测标准、平台化与工具化、多维度数据消费链路。通过标准化评测流程,涵盖硬件性能、模型推理和训练性能,确保评测结果客观透明。平台化实现资源管理与任务调度,支持大规模周期性评测;工具化则应对紧急场景,快速适配并生成报告。最后,多维度数据消费链路将评测数据结构化保存,服务于综合通用、特定业务及专业性能分析等场景,帮助用户更好地理解和使用AI硬件。