01 | 基于 OpenAI SDK 开发一个自己的 GPT

2024/11/26 AI OpenAI ChatGPT Gradio 共 2587 字,约 8 分钟

在当今人工智能快速发展的时代,构建属于自己的聊天机器人已经变得越来越容易。本文将详细指导你如何使用 OpenAI SDK 和 Gradio 库,从零开始开发一个功能强大且交互友好的类 ChatGPT 应用。

前置条件

开始之前,请确保你已准备好:

  • OpenAI API KEY(可在 OpenAI 官网申请)
  • Python 开发环境(推荐使用 Python 3.8 或更高版本)
  • 基本的 Python 编程知识

开发步骤

Step 1: 安装依赖库

首先,我们需要安装必要的依赖库。在命令行或终端中运行以下命令:

pip install openai
pip install gradio
pip install python-dotenv

Step 2: 使用 OpenAI SDK 进行文本生成

下面是一个简单的示例代码,展示了如何与 OpenAI API 交互:

from openai import OpenAI
from dotenv import load_dotenv
import os

load_dotenv()

# 初始化 OpenAI 客户端
client = OpenAI(
    api_key=os.getenv("OPENAI_API_KEY")
)

# 调用 OpenAI API 创建聊天完成
chat_completion = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[{"role": "user", "content": "Hello world"}]
)

print(chat_completion)

Step 3: 创建交互界面

接下来,我们将使用 Gradio 库创建一个简单的 Web 界面:

import gradio as gr
from openai import OpenAI
from dotenv import load_dotenv
import os

load_dotenv()

# 初始化 OpenAI 客户端
client = OpenAI(
    api_key=os.getenv("OPENAI_API_KEY")
)

def chatbot(input_text, history):
    # 调用 OpenAI API 创建聊天完成
    chat_completion = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": input_text}]
    )
    return chat_completion.choices[0].message.content

# 创建 Gradio 聊天界面
iface = gr.ChatInterface(chatbot)
iface.launch(server_name="0.0.0.0", server_port=7860)

Step 4: 添加记忆和流式输出

为了提升用户体验,我们可以为聊天机器人添加记忆功能和流式输出:

import gradio as gr
from openai import OpenAI
from dotenv import load_dotenv
import os

load_dotenv()

client = OpenAI(
    api_key=os.getenv("OPENAI_API_KEY")
)

def format_messages(history, input_text):
    # 格式化消息列表,保留最近的 10 条对话
    messages = []
    if len(history) > 10:
        history = history[-10:]
    for item in history:
        messages.append({"role": "user", "content": item[0]})
        messages.append({"role": "assistant", "content": item[1]})
    messages.append({"role": "user", "content": input_text})
    return messages

def get_response(input_text, history):
    messages = format_messages(history, input_text)
    chat_completion = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=messages,
        stream=True  # 启用流式输出
    )
    return chat_completion

def chatbot(input_text, history):
    results = get_response(input_text, history)
    contents = ""
    for chunk in results:
        if chunk.choices[0].delta.content is not None:
            contents += chunk.choices[0].delta.content
            yield contents

iface = gr.ChatInterface(chatbot)
iface.launch(server_name="0.0.0.0", server_port=7860)

关键特性解析

1. OpenAI SDK 集成

通过 OpenAI 的 Python SDK,我们可以轻松地与大语言模型进行交互。关键步骤包括:

  • 初始化 OpenAI 客户端
  • 配置模型参数
  • 发送聊天消息

2. Gradio 界面

Gradio 库提供了快速构建 Web 界面的能力:

  • 简单的界面配置
  • 实时交互
  • 跨平台兼容性

3. 对话记忆

通过维护最近的对话历史,我们实现了上下文连续性:

  • 保留最近 10 条对话
  • 动态构建消息列表
  • 提供连贯的对话体验

4. 流式输出

流式输出模拟了类似 ChatGPT 的打字机效果:

  • 实时展示响应
  • 提升用户交互体验
  • 减少等待时间

结语

通过本教程,你已经学会了如何使用 OpenAI SDK 和 Gradio 构建一个功能丰富的聊天机器人。这个项目为你进一步探索人工智能应用开发提供了坚实的基础。

进一步探索

  1. 尝试不同的模型参数,如 temperaturemax_tokens
  2. 添加更多高级功能,如角色定制
  3. 探索更复杂的对话场景和应用场景

除了以上提到的进阶方向,你还可以考虑集成语音识别和语音合成功能,使聊天机器人支持语音交互,或者添加多语言支持以扩展应用的使用场景。无论选择哪个方向,重要的是持续学习和实践,在开发过程中不断优化和改进你的应用。

文档信息

Search

    Table of Contents

    京ICP备2021015985号-1