Python中使用OpenAI API的入门指南

本文详细介绍了如何在Python中逐步创建第一个OpenAI API项目,包括获取API密钥、设置虚拟环境、使用FastAPI构建Web接口,以及如何与GPT-4模型进行交互的完整技术实现流程。

Python中使用OpenAI API的入门指南

准备工作

在开始之前,需要确保已安装Python 3.9或更高版本,并具备基本的Python编程知识。本项目需在本地IDE(如VS Code)中运行,不推荐在云端笔记本环境中使用。

获取OpenAI API密钥

  1. 访问某机构平台网站并登录或注册账号
  2. 进入设置页面的“计费”部分完成账户验证和支付方式设置
  3. 在API密钥页面生成新的密钥(格式为sk-XXXXX)

项目设置

创建名为openai_api_hello的项目文件夹,包含以下文件:

requirements.txt

1
2
3
4
fastapi
uvicorn
openai
python-dotenv

虚拟环境配置

  1. 通过命令面板创建venv虚拟环境
  2. 选择Python 3.11版本
  3. 安装requirements.txt中的依赖包

主要代码实现

创建main.py文件,包含以下核心组件:

导入依赖库

1
2
3
4
5
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
import os
from openai import OpenAI
from dotenv import load_dotenv

API客户端初始化

1
2
client = OpenAI(api_key="sk-XXXXX")  # 替换为实际API密钥
app = FastAPI()

请求模型定义

1
2
class ChatRequest(BaseModel):
    message: str

聊天端点实现

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
@app.post("/chat")
async def chat(request: ChatRequest):
    try:
        completion = client.chat.completions.create(
            model="gpt-4",
            messages=[
                {"role": "system", "content": "You are a helpful assistant."},
                {"role": "user", "content": request.message}
            ]
        )
        return {"response": completion.choices[0].message.content}
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))

根端点

1
2
3
@app.get("/")
def root():
    return {"message": "Hello, World"}

环境变量配置(可选)

创建.env文件存储API密钥:

1
OPENAI_API_KEY=<您的密钥>

使用python-dotenv读取配置:

1
2
load_dotenv(dotenv_path=os.path.join(os.path.dirname(__file__), ".env"))
api_key = os.getenv("OPENAI_API_KEY")

运行和测试

  1. 在终端执行:uvicorn main:app --reload --port 8010
  2. 访问http://127.0.0.1:8010/docs查看API文档界面
  3. 通过POST /chat端点发送JSON格式请求:
1
2
3
{
  "message": "您的提示内容"
}

技术架构

  • 后端框架: FastAPI提供REST API支持
  • 异步处理: 使用async/await处理并发请求
  • 错误处理: 完善的异常捕获和HTTP状态码返回
  • 模型交互: 通过官方OpenAI库与GPT-4模型通信

后续开发建议

  1. 添加前端界面(React/Vue/Streamlit)
  2. 增强错误处理机制
  3. 尝试其他某机构模型(如GPT-3.5)
  4. 实现对话历史记录功能
  5. 添加速率限制和身份验证

这个项目展示了如何快速构建一个与大型语言模型交互的Web服务,为更复杂的AI应用开发奠定了基础。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计