跳到主要内容

文本生成

功能描述

文本生成支持基于用户输入的文本提示 Prompt ,生成符合语境、逻辑连贯的续写内容,或直接创作全新文本。无论是长文创作,还是特定风格的内容生成,均能通过简洁的 API 调用实现,且兼容 OpenAI 风格接口,降低开发者接入成本。

功能特点

  • 多场景适配:支持文案创作、代码生成、内容摘要等多类场景
  • 风格可控:可通过参数精准控制生成内容的随机性、长度、语气风格
  • 无缝集成:兼容主流开发框架 LangChainLlamaIndex 等),支持函数调用、工具链扩展
  • 高效响应:支持流式输出 Stream ,减少等待时间,提升交互体验

模力方舟集成了多种高性能文本生成模型,您可以在 AI 模型广场 中了解其特性并体验效果,也可以通过 基础文本生成示例 快速上手。

快速上手:基础文本生成示例

示例一:通过 curl 快速使用大模型能力

一些框架、插件封装度较高,curl 可清晰了解请求路径、参数的原始情况:

curl https://ai.gitee.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer 您的访问令牌" \
-d '{
"model": "Qwen2.5-72B-Instruct",
"stream": false,
"messages": [
{
"role": "system",
"content": "你是聪明的助手"
},
{
"role": "user",
"content": "老鼠生病了可以吃老鼠药治好吗?"
}
]
}'

AI 模型响应:

{
"id": "chat-476266af435142d2bb7d342ea54694f2",
"object": "chat.completion",
"created": 1731401912,
"model": "Qwen2.5-72B-Instruct",
"choices": [{
"index": 0,
"message": {
"role": "assistant",
"content": "不可以。老鼠药是用于杀死老鼠的毒药,而不是治疗老鼠的疾病。如果老鼠生病了,应该寻求兽医的帮助。",
"tool_calls": []
},
"logprobs": null,
"finish_reason": "stop",
"stop_reason": null
}],
"usage": {
"prompt_tokens": 27,
"total_tokens": 57,
"completion_tokens": 30
},
"prompt_logprobs": null
}

示例二:使用 OpenAI 客户端调用模力方舟模型 API

模力方舟的 Serverless API 兼容开发者喜爱且社区流行的 OpenAI 风格 API。

所有支持 OpenAI API 的工具都可以直接使用模力方舟的 Serverless API 工作。

  1. 获取访问凭证:登录模力方舟控制台,在 工作台 -> 访问令牌 中创建访问令牌。
  2. 安装客户端:以 OpenAI 客户端为例,首先安装依赖:
pip install openai -i https://mirrors.cloud.tencent.com/pypi/simple

如果您有 javascript 经验可使用 OpenAI nodejs 客户端

通过简单接口调用,生成指定内容:

python
from openai import OpenAI
import json

base_url = "https://ai.gitee.com/v1"

model_name = "Qwen2.5-72B-Instruct"

# https://ai.gitee.com/dashboard/settings/tokens 获取您的访问令牌
GITEE_AI_API_KEY = "您的访问令牌"
client = OpenAI(base_url=base_url, api_key=GITEE_AI_API_KEY)

completion = client.chat.completions.create(
model=model_name, # 指定模型名称 例如 Qwen2.5-72B-Instruct,可访问 https://ai.gitee.com/serverless-api 查看
stream=True,
temperature=0.7,
top_p=0.95,
frequency_penalty=1.05,
messages=[
{"role": "system", "content": "你是一个有用的助手。"},
{"role": "user", "content": "写一个 python 简明教程"}
]
)

for chunk in completion:
print(chunk.choices[0].delta.content, end="")

除了纯文本,您还可以让模型以 JSON 格式返回结构化数据 —— 此功能称为 结构化输出 ,在模力方舟中可通过 guided_json 参数实现。

流式响应

对于长文本生成,启用流式响应 stream=True 可实时获取结果,减少等待时间:

python
from openai import OpenAI

# 初始化客户端
client = OpenAI(
base_url="https://ai.gitee.com/v1",
api_key="您的访问令牌"
)

stream = client.chat.completions.create(
model="Qwen2.5-72B-Instruct",# 替换成指定模型名称
messages=[
{"role": "user", "content": "写一段关于人工智能发展历程的短文"}
],
stream=True, # 启用流式输出
temperature=0.6
)

for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")

核心参数说明

  • tool_choice: 支持 auto 由模型自动选择工具,也支持强制选择工具,写法如下:
"tool_choice": {"type": "function", "function": {"name": "function_name"}},
  • guided_json:让模型以指定的 JSON Schema 响应。不建议与 toolsguided_json 同时传入。

    JSON Schema 更多信息可参阅:JSON Schema

  • guided_choice: 让模型选择提供的字符串列表之一,不建议与 toolsguided_json 同时传入。

例如判断用户输入正负面性可传入:

"guided_choice": ["正面", "负面", "中性"]

其他参数详见 接口文档

模型选择

通过 API 生成内容时,一个关键选择是您想要使用的模型,即上述代码示例中的 model 参数。您可以在 模型广场 找到可用模型的完整列表。选择文本生成模型时,需要考虑以下几个因素:

任务场景适配

  • 通用文本创作:如文案撰写、故事续写,优先选语言理解与生成能力均衡的模型,适配日常多样化表达需求
  • 专业领域任务:代码生成、数学推理等场景,需聚焦模型在对应领域的专项能力,像代码逻辑推导、公式运算精度
  • 长文本处理:万字级文档生成,关注模型上下文窗口(如 32K、128K 等),确保完整承接信息逻辑

功能特性需求

  • 工具调用能力:需结合外部系统(如函数调用、多模态工具),优先选标注 “Function Calling” 的模型(如 kimi-k2-instruct、Qwen2.5-72B-Instruct),实现与业务系统深度交互
  • 多语言支持:涉及中英双语或小语种,关注 “多语言” 标签模型(如 ERNIE-4.5-Turbo ),保障跨语言文本质量

选型实践建议

  • 快速验证:先用免费模型(如 Qwen3-8B、Qwen3-4B )跑通流程,验证任务可行性
  • 场景深化:聚焦核心需求(如长文本选 kimi-k2-instruct 、专业推理选 DeepSeek-R1 ),迁移至对应模型优化效果

结合以上考虑因素,可根据实际业务的文本场景复杂度、功能依赖等精准匹配模力方舟模型广场中的模型,提升文本生成效率与质量。

提示工程

提示工程是为模型编写有效指令的过程,目的是让模型持续生成符合需求的内容。由于模型生成具有非确定性,构建精准提示词需结合艺术与科学,但通过技术和最佳实践可稳定获取优质结果。

  • 核心原则-模型适配性:不同模型、同系列不同版本对提示的响应存在差异。

消息角色与指令遵循

通过 instructions 参数或消息角色,可分层向模型注入指令,控制响应逻辑。

  1. instructions 参数:全局指令优先级

instructions 为模型提供高级指令(语气、目标、示例等),优先级高于 input 内容。

javascript
import OpenAI from 'openai';
const client = new OpenAI({
baseURL: 'https://ai.gitee.com/v1',
apiKey: '您的模力方舟API密钥',
});

const response = await client.responses.create({
model: '对应模型名称',
// 定义全局风格/规则
instructions: '用老奶奶的语气说话,带点生活化的比喻和慈祥的唠叨',
input: 'JavaScript中的分号是可选的吗?',
});

console.log(response.output_text);
// 示例输出:"哎哟孩子啊,JavaScript里这个分号嘛,就像咱们包饺子放盐——可放可不放!不过奶奶跟你说啊,该放的时候还是得放,不然煮出来容易破皮(出bug)哩!"
  1. 消息角色:精细化场景控制

    结合 systemuserassistant 角色,可更灵活定义交互逻辑。

    若需深度定制 AI 人设(如二次元风格、专业助手),可扩展阅读:定制AI的聊天角色风格

提示词格式化技巧

通过 Markdown 和 XML 标签 增强提示词结构,帮助模型理解逻辑边界,提升输出准确性。

推荐结构(developer 消息)

  • 身份:描述助手的角色、沟通风格和目标
  • 指令:明确规则(必做 / 禁止事项)
  • 示例:提供输入输出样例
  • 上下文:补充私有数据或相关信息(建议放末尾,便于动态替换)

示例:代码生成提示词

# 身份
你是一名编码助手,帮助在JavaScript代码中强制使用蛇形命名法变量,并编写可在Internet Explorer 6中运行的代码。

# 指令
定义变量时,使用蛇形命名法(例如my_variable)而不是驼峰命名法(例如myVariable)。
为了支持旧浏览器,使用较旧的"var"关键字声明变量。
不要用Markdown格式回应,只需按要求返回代码。

# 示例
<user_query>
如何声明一个用于名字的字符串变量?
</user_query>

<assistant_response>
var first_name = "安娜";
</assistant_response>

少样本学习

通过在提示词中包含少量输入 / 输出示例,引导模型快速掌握任务(无需微调)。模型会隐式学习示例中的模式并应用于新输入。

示例:情感分类任务

# 身份
你是一个有帮助的助手,将简短的产品评论标记为正面、负面或中性。

# 指令
* 响应中只输出一个单词,不包含额外格式或评论。
* 你的响应只能是"正面"、"负面"或"中性"中的一个。

# 示例
<product_review id="example-1">
我非常喜欢这副耳机——音质太棒了!
</product_review>

<assistant_response id="example-1">
正面
</assistant_response>

<product_review id="example-2">
电池续航还行,但感觉很廉价。
</product_review>

<assistant_response id="example-2">
中性
</assistant_response>

<product_review id="example-3">
客户服务太糟糕了,我再也不会从他们那里买东西了。
</product_review>

<assistant_response id="example-3">
负面
</assistant_response>

函数调用与提示词结合

当提示词需要外部数据(如实时天气、数据库查询)时,可通过函数调用扩展模型能力。模型会根据提示词判断是否调用工具、调用哪个工具及参数,客户端执行后返回结果即可。

详细实现方法可参考: 函数调用

上下文与性能优化

  1. 上下文窗口规划 模型可处理的最大数据量有限,称为上下文窗口:
  • 不同模型支持的窗口大小不同
  • 长文本处理建议:分段输入、使用摘要工具压缩上下文
  1. 提示词缓存优化 将重复使用的固定内容(如系统指令)放在提示词开头,利用缓存减少计算成本:
python
# 高效结构:固定内容在前,动态内容在后
messages = [
{"role": "system", "content": "固定的系统指令,如'你是电商客服,需礼貌回答订单问题'"}, # 可被缓存
{"role": "user", "content": "动态用户输入:我的订单12345什么时候发货?"} # 实时处理
]