从0到1开发AI Agent(智能体)(三)OpenAI API的快速入门

AI Agent,即人工智能代理,一般直接叫做智能体。在是一种能够感知环境、做出决策并采取行动的系统。这些系统能够执行被动的任务,也能够主动寻找解决问题的方法,适应环境的变化,并在没有人类直接干预的情况下做出决策。

基于大模型的AI Agent开发常用框架包括:LangChain、LlamaIndex、OpenAI API

近两年火到天边基于大语言模型的聊天工具ChatGPT(于2022年12月推出),其背后的开发团队是OpenAI。OpenAI是一个专注于人工智能研究的公司,他们不仅开发了ChatGPT,还创造了许多令人惊叹的AI工具,像是能生成图片的DALL·E。

ChatGPT和 DALL·E 都为模型提供了网页版的对话界面以及一系列内置功能,例如集成 Bing 搜索功能、代码执行功能、数据分析功能。对于普通用户来说,这样的入口方便且直接。

不过,网页可不是我们访问 GPT模型的唯一方式。开发者可以借助OpenAI API,在程序中通过 API与模型进行交互。

官网:https://openai.com/index/openai-api/

1. OpenAI API 聊天程序示例

1.1 首先要有一个API KEY

可以到OpenAI官网注册,https://openai.com/

1.2 安装openai依赖

pip install openai

1.3 代码:

from openai import OpenAI
# 当前参数是OpenAI的代理服务OpenAI HK的参数,如果使用官方接口,去掉参数即可
# 生成客户端对象
client = OpenAI(      
    api_key='hk-iwtbie1000cf1b4a91e427',
    base_url='https://api.openai-hk.com/v1'
)
# 获取返回对象
response = client.chat.completions.create(  # 聊天接口
    model="gpt-4o-mini",    # 模型名称
    response_format={       # 返回的格式类型
"type": "json_object"
    },
    messages=[       # 组织完整的对话历史
        {
"role": "system",
"content": "您是一个帮助用户了解鲜花信息的智能助手,并能够输出JSON格式的内容."
        },{
"role": "user",
"content": "生日送什么花最好?"
        },{
"role": "assistant",
"content": "玫瑰花是生日礼物的热门选择."
        },{
"role": "user",
"content": "送货需要多长时间?"
        },

    ]
)
# 打印完整的返回对象
print(response) 
# 打印返回的文本
print(response.choices[0].message.content)

1.4 返回对象格式

# 完整的返回对象
ChatCompletion(
    id='chatcmpl-Abczkrvv1B1pxjHVfspV3OJWeGpmu', 
    choices=[
        Choice(
            finish_reason='stop', 
            index=0, 
            logprobs=None, 
            message=ChatCompletionMessage(
                content='{"送货时间":"一般情况下,鲜花的送货时间取决于所在地区和花店的服务政策。通常情况下,城市内当天送达是比较常见的服务,但在高峰期或节假日可能需要提前预定。如果是在偏远地区,送货时间可能会更长,一般需要1-3天。建议提前确认具体的送货时间与花店。"}', refusal=None, role='assistant', audio=None, function_call=None, tool_calls=None)
            )
    ], 
    created=1733531396, 
    model='gpt-4o-mini-2024-07-18', 
    object='chat.completion', 
    service_tier=None, 
    system_fingerprint='fp_04751d0b65', 
    usage=CompletionUsage(
        completion_tokens=88, 
        prompt_tokens=65, 
        total_tokens=153, 
        completion_tokens_details=CompletionTokensDetails(accepted_prediction_tokens=0, audio_tokens=0, reasoning_tokens=0, rejected_prediction_tokens=0), prompt_tokens_details=PromptTokensDetails(audio_tokens=0, cached_tokens=0)
    )
)

# 返回的文本
{"送货时间":"一般情况下,鲜花的送货时间取决于所在地区和花店的服务政策。通常情况下,城市内当天送达是比较常见的服务,但在高峰期或节假日可能需要提前预定。如果是在偏远地区,送货时间可能会更长,一般需要1-3天。建议提前确认具体的送货时间与花店。"}

{“送货时间”:“一般情况下,鲜花的送货时间取决于所在地区和花店的服务政策。通常情况下,城市内当天送达是比较常见的服务,但在高峰期或节假日可能需要提前预定。如果是在偏远地区,送货时间可能会更长,一般需要1-3天。建议提前确认具体的送货时间与花店。”}

1.5 Chat接口描述client.chat.completions.create

endpoint地址:post https://api.openai.com/v1/chat/completions

1.5.1 请求参数说明

model参数

model参数指定了大模型的具体型号。除了代码中的gpt-4o-mini 之外,OpenAI公司还有多种模型可供选择。需要注意的是,在使用 chat.completions方法时,只能选择表格中列出的聊天模型。如果选择其他类型的模型,那么需要调用相应的 API。

OpenAI常见模型列表,截止到20241206

在这里插入图片描述

参考:https://platform.openai.com/docs/models

messages参数

代码中的参数 messages 表示消息数组,也是与聊天模型交互的主要部分。每条消息包含一个角色(role)和一段内容(content)。这里的角色指定了消息的发送者或类型,通常有以下几种:

  • “system” : 代表系统级的指令或信息,通常用于设置聊天的背景或上下文。例如,{"role":"system","content":"您是一个帮助用户了解鲜花信息的智能助手,并能够输出 JSON 格式的内容。"},这条消息设定了智能助手的角色和输出格式。

  • “user” : 代表用户的输入。这是模拟用户与智能助手对话的部分。例如{"role":"user","content":"生日送什么花最好?"}表示用户询问什么样的花作为生日礼物最合适。

  • “assistant” : 代表智能助手的回复,通常是模型根据上下文生成的回答。例如{"role":"assistant","content":"玫瑰花是生日礼物的热门选择。"}, 表示智能助手建议送玫瑰作为生日礼物。

在这个代码示例中,通过**“system”、“user” 和 “assistant”** 的一系列角色消息模拟了一个用户与智能助手关于鲜花信息的对话场景。用户提出问题,智能助手基于之前的系统指令(定义助手的角色和能力)和对话历史进行回答。借助这种方式,可以模拟出较为真实的聊天体验。

response_format参数

代码中的response_format={"type":"json_object"}指定响应格式为JSON对象,这意味着模型的响应将以 JSON 格式返回,以方便解析和使用。

其他完整参数

见:https://platform.openai.com/docs/api-reference/chat/create

1.5.2 返回参数说明

id 参数
聊天完成的唯一标识符

finish_reason参数
模型停止生成标记的原因。stop 表示模型达到了:自然停止点或提供的停止序列,length 表示达到了请求中指定的最大标记数,content_filter 表示遇到内容过滤器标志而省略了内容,tool_calls 表示模型调用了工具,或function_call (已弃用)表示果模型调用了函数

content参数
消息文本内容

model 参数
用于聊天的模型型号

其他完整参数
见:https://platform.openai.com/docs/api-reference/chat/object

2. OpenAI API 图片生成示例

大模型不仅能输出文本,而且拥有多模态的能力,OpenAI公司拥有 DALL·E可以生成图片。因为要展示图片,因此我们要安装Jupyter Notebook环境

Jupyter Notebook: 一个“笔记本”工具:就像普通笔记本用来写笔记一样,Jupyter Notebook 是一个数字笔记本,既可以写代码,也可以写文字,还能画图、做表格。它可以直接显示绘图结果(比如数据图表、统计图),适合用来做数据分析和机器学习。

这里使用他的目的是:在笔记本中(ipynb文件)运行代码,并直接显示出代码生成的图片

安装Jupyter Notebook依赖:pip install jupyter notebook

新建hello-openai.ipynb文件

# hello-openai.ipynb
from openai import OpenAI

client = OpenAI(
    api_key='hk-iwtbie10b4a91e427',
    base_url='https://api.openai-hk.com/v1'
)

# 请求DALL-E生成图片
response = client.images.generate(   # 图片生成接口,见接口秒速
  model="dall-e-3",
  prompt="电商花语秘境的新春玫瑰宣传海报,配上文案",
  size="1024x1024",
  quality="standard",
  n=1,
)

# 获取图片URL
image_url = response.data[0].url

# 读取图片
import requests
image = requests.get(image_url).content

# 在Notebook中显示图片
from IPython.display import Image
Image(image)

这里的 images.generate 方法调用 DALL·E3模型来创建一张图片。指令的目的是生成一张尺寸为 1024 像素 x1024 像素的电商花语秘境的新春玫瑰花宣传海报。之后从生成的响应中提取图片的 URL,这是图片存储位置的网络链接。然后,使用Python的requests库从URL获取图片内容,并利用IPython的lmage函数在Jupyter Notebook 中显示这张图片

在截图中可以看到,生成的图片效果还是非常不错的

Images接口描述 client.images.generate

endpoint地址:post https://api.openai.com/v1/images/generations

参数说明:
见:https://platform.openai.com/docs/api-reference/images/create


3. 如何系统学习掌握AI大模型?

AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。

学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。

这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享

1. 成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
在这里插入图片描述

2. 大模型经典PDF书籍

书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础(书籍含电子版PDF)

在这里插入图片描述

3. 大模型视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识

在这里插入图片描述

4. 2024行业报告

行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。

在这里插入图片描述

5. 大模型项目实战

学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

在这里插入图片描述

6. 大模型面试题

面试不仅是技术的较量,更需要充分的准备。

在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

在这里插入图片描述

全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以微信扫描下方CSDN官方认证二维码,免费领取【保证100%免费

### 如何从零开始构建智能体 (Agent) #### 架构设计 构建智能体的核心在于定义其感知环境、处理输入并作出决策的能力。对于初学者来说,可以从较为简单的目标出发逐步增加复杂度。一个基本的智能体架构应该包括以下几个部分: - **感知模块**:负责接收来自外部世界的信号或数据流作为输入。 - **决策逻辑/算法**:依据接收到的信息执行特定的任务或是做出反应;这部分可以采用预设规则集、机器学习模型等方式实现。 - **行动接口**:用于将决定转化为实际操作指令发送给外界。 为了使上述组件能够协同工作,在设计初期就需要考虑好各个部件之间的通信机制以及整体系统的可扩展性和灵活性[^1]。 #### 实现方法 针对不同应用场景和技术栈的选择会有所不同,但对于Python程序员而言,以下是几种常见的实践路径: ##### 使用强化学习框架 通过引入像Stable Baselines3这样的开源工具包来简化RL(Reinforcement Learning, 强化学习)实验流程是一个不错的选择。它支持多种经典的RL算法,并提供了易于使用的API来进行环境配置和训练过程管理。 ```python from stable_baselines3 import PPO model = PPO('MlpPolicy', 'CartPole-v1') model.learn(total_timesteps=10_000) obs = env.reset() for i in range(1000): action, _states = model.predict(obs, deterministic=True) obs, rewards, dones, info = env.step(action) ``` ##### 利用对话式AI平台 如果目标是创建聊天机器人类型的智能代理,则Dialogflow CX 或Rasa等专为此类应用而优化的服务可能是更好的起点。这些服务通常内置了大量的自然语言理解(NLU)特性,可以帮助开发者更快地上手。 #### 入门教程推荐 考虑到新手可能缺乏相关背景知识,《Hands-On Intelligent Agents with OpenAI Gym》这本书籍提供了一个很好的入门指南,涵盖了从基础理论到具体案例分析的内容。此外,官方文档往往是最好的资源之一,无论是TensorFlow还是PyTorch都拥有详尽的教学材料帮助用户熟悉各自的生态系统[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值