文本模型
文本模型从文本输入生成自然语言。您可以将它们用于聊天机器人、写作助手、摘要、分类、提取、起草、翻译以及许多其他语言任务。
对于大多数新的集成,我们建议使用 OpenAI 兼容的 /chat/completions API。它支持单轮提示词、多轮对话、流式输出、结构化输出以及工具调用等高级功能。
文本模型的功能
文本模型是通用语言模型,可以:
- 回答问题和遵循指令
- 以特定风格续写或改写文本
- 摘要长篇段落或文档
- 从非结构化文本中提取结构化信息
- 生成代码、文档或报告
- 支持多轮对话体验
不同模型在速度、成本、上下文长度、推理能力和指令遵循质量方面可能有所不同。请根据您的延迟、质量和预算需求选择模型。
基本文本生成
最简单的工作流是发送一组消息并接收一个生成的回复。
curl 'https://api.luchentech.com/inference/v1/chat/completions' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <your_token_here>' \
--data '{
"model": "minimax/minimax-m2.5",
"messages": [
{
"role": "user",
"content": "Write a short product description for a wireless ergonomic keyboard."
}
],
"max_tokens": 200,
"temperature": 0.7
}'
响应将包含一个或多个 choices。在大多数情况下,您可以从以下位置读取生成的文本:
choices[0].message.content
消息角色
messages 数组是文本生成的核心输入格式。
system:为助手设置高层行为、风格或约束user:包含最终用户的请求或提示词assistant:包含多轮对话中先前的模型响应
示例:
[
{
"role": "system",
"content": "You are a concise technical writer. Use clear headings and bullet points."
},
{
"role": "user",
"content": "Explain vector databases to a beginner."
}
]
使用 system 消息来设置持久指令,例如语气、格式、安全边界或特定任务行为。
常见使用模式
单轮提示词
当您只需要一个响应且不需要保留对话历史时,使用单个 user 消息。
{
"model": "minimax/minimax-m2.5",
"messages": [
{
"role": "user",
"content": "Summarize the following paragraph in one sentence: <your_text_here>"
}
]
}
多轮对话
对于聊天体验,包含之前的 user 和 assistant 消息,以便模型能够在上下文中响应。
{
"model": "minimax/minimax-m2.5",
"messages": [
{ "role": "system", "content": "You are a helpful travel assistant." },
{ "role": "user", "content": "I'm visiting Tokyo for 3 days." },
{ "role": "assistant", "content": "Great choice. What kind of trip are you planning?" },
{ "role": "user", "content": "Food and photography." }
]
}
流式输出
当您希望 Token 逐步返回时启用流式输出。这可以改善感知延迟,对于长响应尤其有用。
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.luchentech.com/inference/v1",
)
stream = client.chat.completions.create(
model="minimax/minimax-m2.5",
messages=[
{"role": "user", "content": "Write a step-by-step guide to planting tomatoes."}
],
max_tokens=600,
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
对于较长的输出,建议使用流式输出以降低超时风险并提供更好的用户体验。
JSON 输出
如果您的应用需要机器可读的结果,可以使用 response_format 请求模型输出结构化结果。
curl 'https://api.luchentech.com/inference/v1/chat/completions' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <your_token_here>' \
--data '{
"model": "minimax/minimax-m2.5",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant that only outputs valid JSON."
},
{
"role": "user",
"content": "Extract the company name, country, and industry from: OpenAI is an AI company based in the United States."
}
],
"response_format": {
"type": "json_object"
}
}'
这对于提取、分类和下游自动化工作流非常有用。
提示词技巧
提示词质量与参数调优同样重要。以下实践通常能提高输出质量:
- 明确说明任务、格式、语气和约束
- 将持久指令放在
system消息中 - 要求特定的结构,如列表、表格或 JSON 对象
- 如果任务对格式敏感,提供示例
- 在提示词中排除无关上下文
- 对于长输入,尽可能进行摘要或分块
示例:
{
"role": "system",
"content": "You are a professional editor. Rewrite text to be clear, concise, and suitable for product documentation."
}
选择模型
在选择文本模型时,请考虑:
- 质量:更好的指令遵循和更强的推理能力通常会提高输出质量
- 延迟:较小的模型通常更快
- 成本:更高能力的模型每个 Token 的成本可能更高
- 上下文长度:更长的上下文窗口有助于处理大型文档和多轮对话
- 专业化:某些模型在编码、推理或多语言任务方面更强
如果您不确定从哪里开始,请从通用指令模型开始,然后根据您应用中的实际提示词评估更快或更强大的模型。
最佳实践
- 对于新的文本生成应用,优先使用
/chat/completions - 对于长输出,使用流式输出
- 有意设置
max_tokens,而不是让输出长度不受限制 - 为输入和输出保留上下文空间
- 在生产系统中使用结构化输出之前进行验证
- 使用退避策略重试速率限制等瞬态故障
- 在开发期间记录提示词和响应,以便调试质量问题
常见问题
输出被截断
这通常发生在以下情况:
max_tokens太小- 客户端在生成完成之前超时
- 对非常长的输出使用了非流式请求
尝试增加 max_tokens、启用流式输出并检查客户端超时设置。
输出重复或质量低
尝试:
- 降低
temperature - 调整
top_p或top_k - 添加
frequency_penalty - 重写提示词使其更具体
模型不遵循格式指令
对于更严格的格式控制:
- 使用更强的
system指令 - 使用
response_format请求 JSON 输出 - 提供明确的 schema 或示例输出