通义千问是由阿里云自主研发的大语言模型,用于理解和分析用户输入的自然语言。
模型概览
模型名称 | 模型简介 | 模型输入/输出限制 |
---|---|---|
qwen-turbo | 通义千问超大规模语言模型,支持中文、英文等不同语言输入 | 模型支持8k tokens上下文,为了保证正常的使用和输出,API限定用户输入为6k tokens |
qwen-turbo | 通义千问超大规模语言模型,支持中文、英文等不同语言输入 | 模型支持32k tokens上下文,为了保证正常的使用和输出,API限定用户输入为30k tokens |
qwen-max | 通义千问千亿级别超大规模语言模型,支持中文、英文等不同语言输入。随着模型的升级,qwen-max将滚动更新升级,如果希望使用固定版本,请使用下面的历史快照版本。当前qwen-max模型与qwen-max-0428快照版本等价,均为最新版本的qwen-max模型,也是当前通义千问2.5产品版本背后的API模型 | 模型支持8k tokens上下文,为了保证正常的使用和输出,API限定用户输入为6k tokens |
qwen-max-longcontext | 通义千问千亿级别超大规模语言模型,支持中文、英文等不同语言输入 | 模型支持30k tokens上下文,为了保证正常的使用和输出,API限定用户输入为28k tokens |
API调用
一、开通DashScope并创建API-KEY
-
开通DashScope灵积模型服务
1、 访问DashScope管理控制台:https://dashscope.console.aliyun.com ,
2、在控制台“总览”页下,单击去开通。
3、阅读服务协议,确认无误后单击立即开通
-
创建API-KEY
1、访问DashScope管理控制台API-KEY管理页面:前往API-KEY管理,单击创建新的API-KEY。
2、系统创建生成API-KEY,并在弹出的对话框中展示,可以单击复制按钮将API-KEY的内容复制保存。
-
API-KEY添加至系统变量
1、方式一:通过环境变量设置API-KEY
环境变量添加方式不再赘述。
2、在代码中显式配置API-KEY
import dashscope
dashscope.api_key="YOUR_DASHSCOPE_API_KEY"
二、示例
示例使用代码中显示配置API-KEY的方式。
from http import HTTPStatus
import dashscope
# 替换为自己的 API Key
dashscope.api_key="sk-***********"
def sample_call_streaming():
prompt_text = '用萝卜、土豆、茄子做饭,给我个菜谱。'
response_generator = dashscope.Generation.call(
model='qwen-turbo',
prompt=prompt_text,
# 设置stream为True,开启流式输出
stream=True,
incremental_output=True,
top_p=0.9)
for response in response_generator:
if response.status_code == HTTPStatus.OK:
print(response.output.text, end="") # 输出文本
else:
print(response.code) # 错误码
print(response.message) # 错误信息
if __name__ == '__main__':
sample_call_streaming()
输入参数
参数 | 数据类型 | 默认值 | 说明 |
---|---|---|---|
model(必选) | string | 无 | 指定用于对话的通义千问模型名 |
messages | array | 无 | 户与模型的对话历史。array中的每个元素形式为{“role”:角色, “content”: 内容},角色当前可选值:system、user、assistant和tool。system:表示系统级消息,用于指导模型按照预设的规范、角色或情境进行回应。是否使用system角色是可选的,如果使用则必须位于messages的最开始部分。user和assistant:表示用户和模型的消息。它们应交替出现在对话中模拟实际对话流程。tool:表示工具的消息。在使用function call功能时,如果要传入工具的结果,需将元素的形式设为{“content”:“工具返回的结果”, “name”:“工具的函数名”, “role”:“tool”}。其中name是工具函数的名称,需要和上轮response中的tool_calls[i][‘function’][‘name’]参数保持一致;content是工具函数的输出 |
prompt | string | 无(与messages不可同时为空) | 用户输入的指令,用于指导模型生成回复 |
seed(可选) | integer | 无 | 生成时使用的随机数种子,用于控制模型生成内容的随机性。seed支持无符号64位整数。 |
max_tokens(可选) | integer | 1500或2000 | 指定模型可生成的最大token个数 |
top_p(可选) | float | 无 | 生成过程中的核采样方法概率阈值,例如,取值为0.8时,仅保留概率加起来大于等于0.8的最可能token的最小集合作为候选集。取值范围为(0,1.0),取值越大,生成的随机性越高;取值越低,生成的确定性越高 |
top_k(可选) | integer | 无 | 生成时,采样候选集的大小。例如,取值为50时,仅将单次生成中得分最高的50个token组成随机采样的候选集。取值越大,生成的随机性越高;取值越小,生成的确定性越高。取值为None或当top_k大于100时,表示不启用top_k策略,此时,仅有top_p策略生效。 |
repetition_penalty(可选) | float | 无 | 用于控制模型生成时连续序列中的重复度。提高repetition_penalty时可以降低模型生成的重复度,1.0表示不做惩罚。没有严格的取值范围。 |
presence_penalty(可选) | float | 无 | 用户控制模型生成时整个序列中的重复度。提高presence_penalty时可以降低模型生成的重复度,取值范围[-2.0, 2.0]。 |
temperature(可选) | float | 无 | 用于控制模型回复的随机性和多样性。具体来说,temperature值控制了生成文本时对每个候选词的概率分布进行平滑的程度。较高的temperature值会降低概率分布的峰值,使得更多的低概率词被选择,生成结果更加多样化;而较低的temperature值则会增强概率分布的峰值,使得高概率词更容易被选择,生成结果更加确定 |
stop (可选) | string or array | 无 | stop参数用于实现内容生成过程的精确控制,在模型生成的内容即将包含指定的字符串或token_id时自动停止。stop可以为string类型或array类型 |
stream (可选) | boolean | False | 用于控制是否使用流式输出。当以stream模式输出结果时,接口返回结果为generator,需要通过迭代获取结果,默认每次输出为当前生成的整个序列,最后一次输出为最终全部生成结果,可以通过设置参数incremental_output为False改变输出模式为非增量输出 |
enable_search(可选) | boolean | False | 用于控制模型在生成文本时是否使用互联网搜索结果进行参考 |
result_format(可选) | string | text | 用于指定返回结果的格式,默认为text,也可选择message。推荐您优先使用message格式 |
incremental_output (可选) | boolean | False | 控制在流式输出模式下是否开启增量输出,即后续输出内容是否包含已输出的内容。设置为True时,将开启增量输出模式,后面输出不会包含已经输出的内容,您需要自行拼接整体输出;设置为False则会包含已输出的内容 |
tools | array | None | 用于指定可供模型调用的工具库,一次function call流程模型会从中选择其中一个工具 |
tool_choice | string or object | 在使用tools参数时,用于控制模型调用指定工具 |
出参描述
返回参数 | 数据类型 | 说明 |
---|---|---|
status_code | integer | 200(HTTPStatus.OK)表示请求成功,否则表示请求失败,可以通过code获取错误码,通过message字段获取错误详细信息。 |
request_id | string | 系统生成的标志本次调用的id。 |
code | string | 表示错误码,调用成功时为空值。仅适用于Python |
message | string | 表示调用失败的详细信息,调用成功时为空值。仅适用于Python |
output | object | 表示调用结果信息。 |
output.finish_reason | string | 有四种情况:正在生成时为null;因触发输入参数中的stop条件而结束为stop;因生成长度过长而结束为length;因发生工具调用为tool_calls。 |
output.choices | array | 当result_format为message时输出choices |
output.choices[i].finish_reason | string | 有三种情况:正在生成时为null;因触发输入参数中的stop条件而结束为stop;因生成长度过长而结束为length。 |
output.choices[i].message | object | 模型输出的消息 |
output.choices[i].message.role | string | 模型的角色,固定为assistant |
output.choices[i].message.content | string | 模型生成的文本。 |
output.choices[i].message.tool_calls | object | 如果模型需要调用工具,则会生成tool_calls参数,应用于function call场景 |
usage | object | 计量信息,表示本次请求所消耗的token数据 |
usage.input_tokens | integer | 用户输入文本转换成token后的长度。 |
usage.output_tokens | integer | 模型生成回复转换为token后的长度。 |
usage.total_tokens | integer | usage.input_tokens与usage.output_tokens的总和 |