功能概述
文本生成(Chat Completions)是 API易平台最核心的能力之一,支持调用 200+ 热门 AI 大模型进行智能对话和文本生成。通过统一的 OpenAI 兼容接口,你可以轻松实现:
- 智能对话:构建聊天机器人、虚拟助手
- 内容创作:文章写作、创意生成、文案润色
- 代码辅助:代码生成、调试、重构建议
- 知识问答:回答问题、知识检索、信息提取
- 角色扮演:定制化 AI 角色、场景模拟
支持 OpenAI GPT-4、Claude、Gemini、DeepSeek、Qwen 等 200+ 主流大模型,一个 API Key 调用所有模型。
快速开始
基础对话示例
使用 Chat Completions API 进行简单的单轮对话:
from openai import OpenAI
client = OpenAI(
api_key="your-api-key",
base_url="https://api.apiyi.com/v1"
)
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "user", "content": "介绍一下人工智能的发展历程"}
]
)
print(response.choices[0].message.content)
多轮对话示例
通过 messages 数组维护对话历史,实现上下文连贯的多轮对话:
from openai import OpenAI
client = OpenAI(
api_key="your-api-key",
base_url="https://api.apiyi.com/v1"
)
messages = [
{"role": "system", "content": "你是一个专业的 Python 编程助手"},
{"role": "user", "content": "如何读取 CSV 文件?"},
{"role": "assistant", "content": "可以使用 pandas 库的 read_csv() 函数..."},
{"role": "user", "content": "那如何过滤特定列的数据?"}
]
response = client.chat.completions.create(
model="gpt-4o",
messages=messages
)
print(response.choices[0].message.content)
核心参数详解
model(必填)
指定要使用的模型名称,详见 模型信息 页面。
model="gpt-4o" # GPT-4 Omni
model="claude-sonnet-4.5" # Claude Sonnet 4.5
model="gemini-3-pro-preview" # Gemini 3 Pro
model="deepseek-chat" # DeepSeek Chat
messages(必填)
对话消息数组,每条消息包含 role 和 content 字段:
messages = [
{"role": "system", "content": "你是一个友好的客服助手"},
{"role": "user", "content": "我想咨询退款问题"},
{"role": "assistant", "content": "好的,请问您遇到了什么问题?"},
{"role": "user", "content": "商品有质量问题"}
]
temperature(可选)
控制输出的随机性,范围 0.0 ~ 2.0,默认 1.0:
- 0.0 ~ 0.3:输出更确定、一致,适合事实性任务(翻译、总结、代码生成)
- 0.7 ~ 1.0:平衡创造性和准确性,适合日常对话
- 1.0 ~ 2.0:输出更有创意、多样性,适合创意写作、头脑风暴
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "写一首关于春天的诗"}],
temperature=1.2 # 提高创造性
)
max_tokens(可选)
限制生成的最大 token 数量,用于控制成本和响应长度:
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "用一句话介绍 AI"}],
max_tokens=50 # 限制输出长度
)
不同模型的 token 计费标准不同,详见 定价说明 页面。
top_p(可选)
核采样参数,范围 0.0 ~ 1.0,控制输出的多样性:
- 较低的值(如
0.5):输出更聚焦、确定
- 较高的值(如
0.9):输出更多样、随机
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "推荐一些科幻电影"}],
top_p=0.8
)
通常建议只调整 temperature 或 top_p 其中之一,避免同时使用。
stream(可选)
启用流式输出,逐 token 返回结果,提升用户体验:
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "写一篇关于人工智能的文章"}],
stream=True
)
for chunk in response:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
详见 流式输出 文档。
高级用法
系统提示(System Prompt)
通过 system 角色定义 AI 的行为、角色、知识范围和回复风格:
messages = [
{
"role": "system",
"content": """你是一个专业的法律顾问助手。
规则:
1. 提供准确、专业的法律建议
2. 使用通俗易懂的语言解释法律术语
3. 必要时引用相关法律条文
4. 避免给出绝对性的结论,建议咨询专业律师
5. 保持中立、客观的立场"""
},
{"role": "user", "content": "请问劳动合同可以随时解除吗?"}
]
角色扮演
创建具有特定性格和专业领域的 AI 助手:
messages = [
{
"role": "system",
"content": "你是一位资深的 Python 开发者,拥有 10 年经验。你擅长用简洁的代码解决问题,喜欢使用 Pythonic 的写法,并且会主动指出代码中的潜在问题。"
},
{"role": "user", "content": "帮我写一个快速排序算法"}
]
上下文管理
对于长对话,需要合理管理上下文长度,避免超过模型的 token 限制:
def manage_context(messages, max_history=10):
"""保留最近的对话历史"""
# 保留 system 消息
system_messages = [m for m in messages if m["role"] == "system"]
# 保留最近的 N 条对话
recent_messages = messages[-max_history:]
return system_messages + recent_messages
# 使用示例
messages = manage_context(messages, max_history=10)
response = client.chat.completions.create(
model="gpt-4o",
messages=messages
)
JSON 模式输出
某些模型支持强制输出 JSON 格式:
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": "你是一个数据提取助手,始终以 JSON 格式返回结果"},
{"role": "user", "content": "提取这段文本的关键信息:张三,男,30岁,软件工程师"}
],
response_format={"type": "json_object"}
)
import json
result = json.loads(response.choices[0].message.content)
print(result)
最佳实践
1. 选择合适的模型
根据任务需求选择性价比最优的模型:
| 任务类型 | 推荐模型 | 说明 |
|---|
| 日常对话 | gpt-4o-mini, deepseek-chat | 成本低,响应快 |
| 复杂推理 | gpt-4o, claude-sonnet-4.5, gemini-3-pro-preview | 能力强,准确度高 |
| 代码生成 | gpt-4o, deepseek-coder, claude-sonnet-4.5 | 专业性强 |
| 创意写作 | claude-sonnet-4.5, gpt-4o | 文笔流畅 |
| 多语言翻译 | gemini-3-pro-preview, gpt-4o | 支持语言多 |
2. 优化提示词(Prompt)
好的提示词能显著提升输出质量:
明确任务
清楚说明需要 AI 做什么,提供必要的上下文
# ❌ 不好的提示词
"写一篇文章"
# ✅ 好的提示词
"""请写一篇关于人工智能在医疗领域应用的科普文章。
要求:
- 长度:800-1000 字
- 受众:普通读者
- 结构:引言、应用场景、案例分析、未来展望
- 语气:专业但易懂
- 包含 2-3 个真实案例"""
3. 控制成本
合理使用参数降低 API 调用成本:
# 设置 max_tokens 限制输出长度
response = client.chat.completions.create(
model="gpt-4o-mini", # 使用性价比更高的模型
messages=messages,
max_tokens=500, # 限制最大输出
temperature=0.7
)
{/* 定期清理对话历史 */}
if len(messages) > 20:
messages = messages[-10:] # 只保留最近 10 条
4. 错误处理
添加异常处理,提升应用稳定性:
from openai import OpenAI, OpenAIError
import time
client = OpenAI(
api_key="your-api-key",
base_url="https://api.apiyi.com/v1"
)
def chat_with_retry(messages, max_retries=3):
"""带重试机制的聊天函数"""
for attempt in range(max_retries):
try:
response = client.chat.completions.create(
model="gpt-4o",
messages=messages
)
return response.choices[0].message.content
except OpenAIError as e:
if attempt < max_retries - 1:
time.sleep(2 ** attempt) # 指数退避
continue
else:
raise
# 使用示例
try:
result = chat_with_retry(messages)
print(result)
except OpenAIError as e:
print(f"API 调用失败:{e}")
详见 错误处理 文档。
5. 使用流式输出
对于长文本生成,建议使用流式输出提升用户体验:
def stream_chat(messages):
"""流式输出示例"""
response = client.chat.completions.create(
model="gpt-4o",
messages=messages,
stream=True
)
full_response = ""
for chunk in response:
if chunk.choices[0].delta.content:
content = chunk.choices[0].delta.content
print(content, end="", flush=True)
full_response += content
return full_response
常见问题
如何计算 token 数量?
不同模型的 tokenizer 不同,建议使用 tiktoken 库估算:
import tiktoken
def count_tokens(text, model="gpt-4o"):
"""估算文本的 token 数量"""
encoding = tiktoken.encoding_for_model(model)
return len(encoding.encode(text))
# 使用示例
text = "你好,世界!"
tokens = count_tokens(text)
print(f"Token 数量:{tokens}")
为什么输出被截断了?
可能的原因:
- 达到了
max_tokens 限制
- 模型的上下文窗口不足
- 触发了内容安全策略
解决方法:
- 增加
max_tokens 参数
- 选择支持更长上下文的模型
- 检查
finish_reason 字段判断原因
response = client.chat.completions.create(
model="gpt-4o",
messages=messages,
max_tokens=2000 # 增加输出长度限制
)
finish_reason = response.choices[0].finish_reason
if finish_reason == "length":
print("输出因长度限制被截断")
elif finish_reason == "content_filter":
print("输出因内容安全被过滤")
如何实现对话记忆?
在应用层维护对话历史:
class ChatSession:
def __init__(self, system_prompt=""):
self.messages = []
if system_prompt:
self.messages.append({"role": "system", "content": system_prompt})
def chat(self, user_message):
"""发送消息并记录对话"""
self.messages.append({"role": "user", "content": user_message})
response = client.chat.completions.create(
model="gpt-4o",
messages=self.messages
)
assistant_message = response.choices[0].message.content
self.messages.append({"role": "assistant", "content": assistant_message})
return assistant_message
# 使用示例
session = ChatSession(system_prompt="你是一个友好的助手")
print(session.chat("你好"))
print(session.chat("我刚才说了什么?")) # AI 可以记住上下文
相关文档