OpenAI开发指南

OpenAI简介

OpenAI是领先的AI研究公司,提供了一系列强大的AI模型和API。主要产品包括: - GPT系列语言模型 - DALL·E图像生成 - Whisper语音识别 - Codex代码生成

核心API使用

1. 文本补全(GPT-3.5/4)

python
import openai import os # 设置API密钥 openai.api_key = os.getenv("OPENAI_API_KEY") # 使用ChatCompletion response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[ {"role": "system", "content": "你是一个专业的Python开发者"}, {"role": "user", "content": "如何实现快速排序?"} ], temperature=0.7, max_tokens=1000 ) print(response.choices[0].message.content)

2. 图像生成(DALL·E)

python
# 创建图像 response = openai.Image.create( prompt="一只在月光下弹钢琴的猫", n=1, size="1024x1024" ) # 获取图像URL image_url = response['data'][0]['url'] # 图像变体 response = openai.Image.create_variation( image=open("original_image.png", "rb"), n=1, size="1024x1024" )

3. 语音转文本(Whisper)

python
# 使用Whisper API audio_file = open("speech.mp3", "rb") transcript = openai.Audio.transcribe("whisper-1", audio_file) print(transcript.text)

最佳实践

1. 提示工程(Prompt Engineering)

python
# 结构化提示示例 system_prompt = """ 你是一个专业的数据分析师。请按以下格式回答: 1. 数据概述 2. 关键发现 3. 建议行动 """ user_prompt = "分析过去一个月的销售数据" response = openai.ChatCompletion.create( model="gpt-4", messages=[ {"role": "system", "content": system_prompt}, {"role": "user", "content": user_prompt} ] )

2. 错误处理

python
import time from openai.error import RateLimitError def retry_with_exponential_backoff( func, max_retries=3, initial_delay=1, exponential_base=2, ): def wrapper(*args, **kwargs): num_retries = 0 delay = initial_delay while True: try: return func(*args, **kwargs) except RateLimitError as e: num_retries += 1 if num_retries > max_retries: raise e time.sleep(delay) delay *= exponential_base return wrapper

3. 成本优化

python
def count_tokens(text, model="gpt-3.5-turbo"): """估算token数量""" import tiktoken encoding = tiktoken.encoding_for_model(model) return len(encoding.encode(text)) def optimize_prompt(text, max_tokens=2000): """优化prompt长度""" tokens = count_tokens(text) if tokens > max_tokens: # 实现截断逻辑 pass return text

高级应用

1. 流式响应

python
response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[{"role": "user", "content": "写一个故事"}], stream=True ) for chunk in response: if chunk and chunk.choices[0].delta.content: print(chunk.choices[0].delta.content, end='')

2. 函数调用

python
functions = [ { "name": "get_weather", "description": "获取指定城市的天气信息", "parameters": { "type": "object", "properties": { "city": {"type": "string"}, "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]} }, "required": ["city"] } } ] response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[{"role": "user", "content": "北京今天天气怎么样?"}], functions=functions, function_call="auto" )

安全和隐私

  1. API密钥管理
  2. 使用环境变量
  3. 定期轮换密钥
  4. 设置使用限制

  5. 内容过滤

  6. 实现敏感信息检测
  7. 设置适当的temperature值
  8. 使用内容审核API

  9. 数据保护

  10. 实现数据脱敏
  11. 避免发送敏感信息
  12. 遵守数据保护法规

常见问题解决

  1. Rate Limit处理
  2. Token限制优化
  3. 成本控制策略
  4. 响应质量提升
  5. 错误处理最佳实践