文本生成概述
在开发智能应用的过程中,开发者经常需要处理文本理解和生成的任务,但传统的文本处理方法往往效率低下且效果不佳。语言大模型具备文本理解和文字对话的能力,如当您传入文本信息时,大模型可以理解信息,并结合这些信息进行回复。然而,如何高效地利用这些大模型成为了一个挑战。通过这篇教程,您可以学习到如何使用模型服务API,来调用模型理解文本,生成文本内容,并可以基于此API构建或者扩展自己的应用或者自动化任务,从而提高开发效率和应用质量。
应用场景
您可以在以下场景中使用模型的文本生成能力。
|
场景 |
场景细分 |
说明 |
|---|---|---|
|
内容创作 |
文章生成 |
自动生成文章、新闻、评论等实用文本,提高内容产出效率。 |
|
文本润色 |
在新闻报道、博客文章创作中辅助作者进行创意构思和文本润色。 |
|
|
智能交互 |
智能客服 |
在客服系统中生成自然流畅的回复,提升用户体验。 |
|
聊天机器人 |
在线咨询、英语学习等领域,理解用户意图、按照要求并生成回复。 |
|
|
个性化教学 |
学科问题解答 |
分析题目、考点说明、解题思路、解题结果。 |
|
语言学习 |
按照要求,进行某些语种对话,帮助用户习惯目标语言日常交流。 |
|
|
机器翻译 |
自动翻译 |
结合语音类模型,实现同声传译、日常字幕生成、文本语言翻译等。 |
|
工作处理 |
数据处理 |
根据读入的数据以及任务要求进行处理,如读取研报、分析新闻、评价内容等。 |
前提条件
- 已在页签开通预置服务。详情请见开通MaaS预置服务。
- (可选)如果需要控制服务调用流量,可提前创建自定义接入点,详情请参见MaaS创建自定义接入点。
- 已获取API Key。详情请见在MaaS管理API Key。
- 已获取模型服务的model参数值。详情请见对话Chat/Post。
快速开始
运行如下代码即可开始与deepseek-v3.2模型对话,实现内容创作、摘要生成等。
import requests
import json
if __name__ == '__main__':
url = "https://api.modelarts-maas.com/v2/chat/completions" # API地址
api_key = "MAAS_API_KEY" # 把MAAS_API_KEY替换成已获取的API Key
# Send request.
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {api_key}'
}
data = {
"model": "deepseek-v3.2", # model参数
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "介绍下你自己"}
]
}
response = requests.post(url, headers=headers, data=json.dumps(data), verify=False)
# Print result.
print(response.status_code)
print(response.text)
模型回复预览:
你好!我是DeepSeek,由深度求索公司创造的AI助手,很高兴认识你! 让我简单介绍一下自己: 我的能力特点: · 拥有广泛的知识储备(知识截止到2024年7月) · 纯文本对话模型,擅长各种文字交流和分析 · 支持文件上传功能——可以处理图像、txt、pdf、ppt、word、excel等文件,并从中读取文字信息 · 支持联网搜索(需要你在Web/App手动点开联网搜索按键) 我的特色: ·上下文长度达128K,能处理很长的对话 ·回复风格热情细腻,希望给你温暖的交流体验 ·可以通过官方应用商店下载App使用 虽然我不能: ·进行语音对话 ·生成图片或视频 ·实时识别多模态信息 但我会尽我所能用文字为你提供帮助!无论是学习、工作、生活中的问题,还是想要聊天谈心,我都很乐意陪伴你。 有什么我可以为你做的吗?
curl -X POST "https://api.modelarts-maas.com/v2/chat/completions"\
-H "Content-Type: application/json" \
-H "Authorization: Bearer $MAAS_API_KEY" \
-d '{
"model": "deepseek-v3.2",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "你好"}
]
}'
模型回复预览:
你好!我是DeepSeek,由深度求索公司创造的AI助手,很高兴认识你! 让我简单介绍一下自己: 我的能力特点: · 拥有广泛的知识储备(知识截止到2024年7月) · 纯文本对话模型,擅长各种文字交流和分析 · 支持文件上传功能——可以处理图像、txt、pdf、ppt、word、excel等文件,并从中读取文字信息 · 支持联网搜索(需要你在Web/App手动点开联网搜索按键) 我的特色: ·上下文长度达128K,能处理很长的对话 ·回复风格热情细腻,希望给你温暖的交流体验 ·可以通过官方应用商店下载App使用 虽然我不能: ·进行语音对话 ·生成图片或视频 ·实时识别多模态信息 但我会尽我所能用文字为你提供帮助!无论是学习、工作、生活中的问题,还是想要聊天谈心,我都很乐意陪伴你。 有什么我可以为你做的吗?
支持模型
当前支持文本生成的模型请参见文本生成。
模型选择建议:
- 选择最新的模型:如果您首次选择模型,推荐选择版本最新的模型。在文本分类、内容创作等能力大幅提升。
- 选择对应能力的模型:您可以在文本生成的能力支持列查看模型支持的能力。
API说明
模型调用的完整参数列表请见对话Chat/Post。
编写提示词
提示词(Prompt)是用户与大模型进行交互时输入的文本,用于指导模型生成用户所需的回复内容。正确设计和编写的提示词,可以提高模型输出的内容质量和准确性。提示词的核心作用:
- 明确任务:告诉模型要做什么(例如:翻译、总结、创作、推理等)。
- 提供上下文:补充背景信息,让回复更贴合需求。
- 约束输出格式:指定回答的结构(如列表、JSON、代码等)。
- 控制风格与语气:调整回复的专业性、简洁性或创意性。
在对话Chat API中,通过messages对象将提示词信息传入给模型,其中role字段定义信息传入的角色, content承载消息内容。模型会结合传入的角色和信息来理解内容,并生成对应的回复。
- 用户消息
最终用户传入给模型消息,此时role字段应设置为user ,该类型消息往往是包含用户希望模型处理的具体任务或者处理的信息。
下面就是一个简单的用户消息,要求模型对自身进行介绍。
"messages": [ { "role": "user", "content": "介绍下你自己"} ] - 系统消息
用于设定模型的长期人格、行为准则和对话上下文,此时role字段应设置为system。如果设置系统消息,请放在messages列表的第一位。
下面是一个系统消息示例,提示模型是一个助手,并限制了模型的回答内容。
"messages": [ {"role": "system", "content": "你是一位乐于助人且简洁的助手。回答尽量不超过两句话。" } ] - 模型消息
用于提供对话历史,此时role字段应设置为assistant 。在多轮对话中,会需要传入对话历史,让模型知道它之前说过什么,从而保持连贯性。
"messages": [ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user","content": "你好" }, {"role": "assistant", "content": "你好!很高兴见到你! 我是你的AI助手,随时准备为你提供帮助。无论是回答问题、协助分析,还是聊天解闷,我都可以为你效劳。有什么需要我做的吗?"}, {"role": "user","content": "介绍下你自己" } ]
单轮对话
与模型进行一次交互,交互内容为单轮对话,模型根据系统消息和用户消息来返回内容。
因为是非流式输出,需要等待模型推理完所有内容,将内容一次性返回给您,会有一定延时。
以下为单轮对话的示例代码,可通过model参数替换模型,model参数详情请参见文本生成。
import requests
import json
if __name__ == '__main__':
url = "https://api.modelarts-maas.com/v2/chat/completions" # API地址
api_key = "MAAS_API_KEY" # 把MAAS_API_KEY替换成已获取的API Key
# Send request.
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {api_key}'
}
data = {
"model": "deepseek-v3.2", # model参数
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "你好"
}
]
}
response = requests.post(url, headers=headers, data=json.dumps(data), verify=False)
# Print result.
print(response.status_code)
print(response.text)
curl -X POST "https://api.modelarts-maas.com/v2/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $MAAS_API_KEY" \
-d '{
"model": "deepseek-v3.2",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "你好"}
]
}'
多轮对话
组合使用系统消息、模型消息以及用户消息,可以实现多轮对话,即根据一个主题进行多次对话。
注意:chat.completions接口是无状态的,在每次请求时,将历史信息都放在messages中,并通过role字段设置,让模型了解之前不同角色的不同对话内容,以便进行主题相关的延续性对话。
以下为多轮对话的示例代码,可通过model参数替换模型,model参数详情请参见文本生成。
import requests
import json
if __name__ == '__main__':
url = "https://api.modelarts-maas.com/v2/chat/completions" # API地址
api_key = "MAAS_API_KEY" # 把MAAS_API_KEY替换成已获取的API Key
# Send request.
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {api_key}'
}
data = {
"model": "deepseek-v3.2", # model参数
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "你好"},
{"role": "assistant", "content": "你好!很高兴见到你!"},
{"role": "user", "content": "介绍下你自己"}
]
}
response = requests.post(url, headers=headers, data=json.dumps(data), verify=False)
# Print result.
print(response.status_code)
print(response.text)
curl -X POST "https://api.modelarts-maas.com/v2/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $MAAS_API_KEY" \
-d '{
"model": "deepseek-v3.2",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "你好"},
{"role": "assistant", "content": "你好!很高兴见到你!"},
{"role": "user", "content": "介绍下你自己"}
]
}'
流式输出
大语言模型在生成文本时,无需等待整个序列完全生成完毕,而是将已计算出的词元立即逐步发送给客户端,通过增量式、分块返回生成结果以优化用户体验和资源利用。
以下为流式输出的示例代码,可通过model参数替换模型,model参数详情请参见文本生成。
curl -X POST "https://api.modelarts-maas.com/v2/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $MAAS_API_KEY" \
-d '{
"model": "deepseek-v3.2",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "你好"}
],
"thinking": {
"type": "enabled"
},
"stream": true
}'
from openai import OpenAI
import httpx
base_url = "https://api.modelarts-maas.com/openai/v1" # API地址
api_key = "MAAS_API_KEY" # 把MAAS_API_KEY替换成已获取的API Key
client = OpenAI(api_key=api_key, base_url=base_url, http_client=httpx.Client(verify=False))
response = client.chat.completions.create(
model="deepseek-v3.2", # 此处以deepseek-v3.2为例,您可按需更换模型参数,详情请见文本生成
messages=[
{"role": "system", "content": "You are a helpful assistant"},
{"role": "user", "content": "介绍下你自己"},
],
extra_body={
"thinking": {
"type": "enabled" # 开启深度思考模式
}
},
stream=True
)
for chunk in response:
if not chunk.choices:
continue
print(chunk.choices[0].delta.content, end="")
Function Call
Function Call通过定义工具接口规范,使模型能动态调用外部API实现功能扩展。
支持Function Call功能的模型请参见文本生成,Function Call更多介绍请参见Function Call。
设置模型回答长度限制
当需要控制成本或回答问题时间时,可通过在请求时设置max_tokens字段明确限制模型生成的最大token数量,来限制模型回答长度。
以下为设置模型回答长度限制的示例代码,可通过model参数替换模型,model参数详情请参见文本生成。
import requests
import json
if __name__ == '__main__':
url = "https://api.modelarts-maas.com/v2/chat/completions" # API地址
api_key = "MAAS_API_KEY" # 把MAAS_API_KEY替换成已获取的API Key
# Send request.
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {api_key}'
}
data = {
"model": "deepseek-v3.2", # model参数
"messages": [
{"role": "system", "content": "You are a helpful assistant." },
{"role": "user","content": "你好" }
],
"max_tokens": 1024
}
response = requests.post(url, headers=headers, data=json.dumps(data), verify=False)
# Print result.
print(response.status_code)
print(response.text)
curl -X POST "https://api.modelarts-maas.com/v2/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $MAAS_API_KEY" \
-d '{
"model": "deepseek-v3.2",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "你好"}
],
"max_tokens": 1024
}'