一、调用示例
curl -X 'POST' \'http://ip:8001/v1/completions' \-H 'accept: application/json' \-H 'Content-Type: application/json' \-d '{"model": "qwen-api","prompt": ["讲个中文笑话"],"best_of": 1,"n": 1,"use_beam_search": false,"echo": false,"frequency_penalty": 0.3,"presence_penalty": 0.3,"repetition_penalty": 1.2,"max_tokens": 600,"seed": 0,"stop": "[。!?]","include_stop_str_in_output": true,"stream": false,"temperature": 0.2,"top_p": 0.7,"user": "tmp" }'
二、参数介绍
基本参数
- model: 指定使用的语言模型名称或标识符。
- prompt: 提供给模型的输入文本,是字符串或字符串数组。
- stream: 是否流式返回生成的结果。
- stream_options: 流式响应的额外选项。
- temperature: 控制输出随机性的参数,值越低,输出越确定。
- top_p: 核采样,只从累积概率达到此值的最小集合中选择下一个词。
- use_beam_search: 是否使用束搜索算法进行解码。
- top_k: 只考虑最高概率的k个词汇。
- user: 用户ID或其他标识符,可用于跟踪或限制API使用。
- best_of: 从多个候选输出中选择最佳的一个。如果设置为0,则此功能被禁用。
- echo: 默认为false。如果为true,返回结果将包含输入的提示文本。
-
三个惩罚参数
- frequency_penalty: 默认是0.范围[-2, 2],设置为0.2
对重复出现的 token 施加惩罚,以减少重复性。
作用:对已经生成的 token 的频率施加惩罚,以减少重复性。
工作原理:当某个 token 在生成的文本中出现得越频繁,它的惩罚就越大,从而降低该 token 再次被选中的概率。
适用场景:适用于希望减少某些 token 过度重复的情况,比如避免生成过于冗长或单调的文本。
- presence_penalty: 默认为0.范围[-2, 2],设置为0.2
对已经出现在文本中的新token施加惩罚,以鼓励多样性。
作用:对新出现的 token 施加惩罚,鼓励模型选择新的 token 而不是已经在文本中出现过的 token。
工作原理:一旦某个 token 出现了一次,它就会受到惩罚,不论其频率如何。这可以促使模型探索更多的词汇,增加文本多样性。
适用场景:适用于需要提高文本多样性,避免过多使用相同词汇的情况,特别是在短文本生成中。
- repetition_penalty: 默认为0,范围(0, 2],设置为1.2。
在generation_config.json中的值为1.05
对已生成的单词施加惩罚,避免重复。
作用:对所有已生成的 token 施加惩罚,特别是那些已经生成过一次或多次的 token。
工作原理:与 frequency_penalty 类似,但它不仅考虑 token 的频率,还更加强调避免重复,即使 token 只出现了一次也会受到惩罚。
适用场景:特别适合用于防止生成的文本中含有明显的重复片段,如句子或短语的重复。
frequency_penalty 和 presence_penalty 都是为了增加生成文本的多样性,但它们侧重不同:前者关注的是 token 的频率,而后者关注的是 token 是否已经出现过。
repetition_penalty 更像是两者的结合体,它更加严格地惩罚任何已经出现过的 token,有助于避免生成文本中的重复现象。
实际应用中的选择
在实际应用中,您可能需要根据具体的需求和生成文本的特点来调整这些参数。例如:
如果您发现生成的文本中有某些单词或短语反复出现,可以尝试增加 repetition_penalty。
如果生成的文本显得单调且缺乏变化,可以通过适当增加 frequency_penalty 和 presence_penalty 来提升多样性。
对于不同的任务类型(如诗歌创作、新闻摘要等),您可能需要微调这些参数以获得最佳效果。
对理解模型很重要的参数
- logprobs: 如果指定一个正整数值n,将在每个生成的token上返回最可能的n个token及其对数概率。
注:正式环境设置为0,非正式环境用于获取生成文本中每个token的选择依据及其可能的替代选项。这对于分析模型决策过程、调试或理解模型行为非常有用。
token数量
- max_tokens: 模型生成的最大token数量。
1.长度不够导致的结束。因此max_tokens不能设置太小,尽量设置大一些,但不要超过模型的最大值。
Finish_reason输出内容标识,说明:
· normal:输出内容完全由大模型生成,未触发截断、替换
· stop:输出结果命中入参stop中指定的字段后被截断
· length:达到了最大的token数,根据EB返回结果is_truncated来截断
· content_filter:输出内容被截断、兜底、替换为**等。
min_tokens: 最少生成的token数量。
建议,不要设置min_tokens的值,否则模型生成的后半部分内容会乱说。
下面是设置了min_tokens为300,max_tokens为500的场景。
响应格式
- response_format: 默认为text.定义响应格式的结构。支持json_object、text两种格式。
以json_object格式返回,容易出现不满足效果情况。
Stop
- stop: 当生成的文本中遇到这个字符串时停止生成。
含义:指定一个或多个字符串(通常是标点符号、特殊标记或句子结尾),当生成的文本中遇到这些字符串时,生成过程将停止。
作用:主要用于基于字符或字符串匹配来决定生成文本的结束位置。它直接在生成的文本内容上进行匹配,因此非常适合用来标识常见的结束符号,如句号 (.)、换行符 (\n) 或特定的结束标记(例如 [END])。
应用场景:
当您希望生成的文本在遇到特定的短语或句子结构时结束。
适用于需要精确控制文本结束位置的情况,尤其是当结束标志是明确的字符串时。
其他
- logit_bias: 对特定 token 的 logits 应用偏差值,影响它们的选择概率。
- n: 要生成的完成次数(回复的数量)。
- seed: 随机种子,确保结果可复现。
- min_p: 最小累积概率阈值,与top_p相似但不是基于比例而是绝对概率。
- length_penalty: 默认为1.0.对长序列施加惩罚或奖励。
- early_stopping: 如果设置为true,在达到某个条件时提前终止生成过程。
- stop_token_ids: 停止生成的特殊token ID列表。
- ignore_eos: 忽略结束符号(EOS),继续生成直到满足其他停止条件。
- skip_special_tokens: 是否跳过特殊token在最终输出中。
- spaces_between_special_tokens: 特殊token之间是否插入空格。
- truncate_prompt_tokens: 输入提示的最大长度,超过则截断。truncate_prompt_tokens必须大于1
- include_stop_str_in_output: 是否在输出中包括停止字符串。
- suffix: 在每次完成的末尾添加的文本。
-
注:不支持,可以理解改参数无效
三、chat/completions与completions对照
序号 | v1/chat/completions | v1/completions | 备注 | ||
文本对话 | 例子 | 文本续写 | 例子 | ||
1 | "messages": [ | "prompt": [ | |||
2 | { | ], | |||
3 | "content": "string", | ||||
4 | "role": "system", | ||||
5 | "name": "string" | ||||
6 | }, | ||||
7 | { | ||||
8 | "content": "string", | ||||
9 | "role": "user", | ||||
10 | "name": "string" | ||||
11 | }, | ||||
12 | { | ||||
13 | "content": "string", | ||||
14 | "role": "assistant", | ||||
15 | "name": "string", | ||||
16 | "function_call": { | ||||
17 | "arguments": "string", | ||||
18 | "name": "string" | ||||
19 | }, | ||||
20 | "tool_calls": [ | ||||
21 | { | ||||
22 | "id": "string", | ||||
23 | "function": { | ||||
24 | "arguments": "string", | ||||
25 | "name": "string" | ||||
26 | }, | ||||
27 | "type": "function" | ||||
28 | } | ||||
29 | ] | ||||
30 | }, | ||||
31 | { | ||||
32 | "content": "string", | ||||
33 | "role": "tool", | ||||
34 | "name": "string", | ||||
35 | "tool_call_id": "string" | ||||
36 | }, | ||||
37 | { | ||||
38 | "content": "string", | ||||
39 | "role": "function", | ||||
40 | "name": "string" | ||||
41 | }, | ||||
42 | ], | ||||
43 | "model": "string", | qwen-api | "model": "string", | 指定使用的语言模型名称或标识符 | |
44 | "max_tokens": 0, | "max_tokens": 16, | 不能设置太小,否则容易导致句子不完整。 | ||
45 | "frequency_penalty": 0, | "frequency_penalty": 0, | |||
46 | "presence_penalty": 0, | "presence_penalty": 0, | |||
47 | "repetition_penalty": 1, | "repetition_penalty": 1, | 在generation_config.json中的值为1.05。 范围(0, 2],设置为1.2。 | ||
48 | "stream": false, | "stream": false, | |||
"temperature": 0.7, | "temperature": 1, | ||||
"top_p": 1, | "top_p": 1, | ||||
"top_k": -1, | "top_k": -1, | ||||
"min_tokens": 0, | "min_tokens": 0, | ||||
49 | "stream_options": { | "stream_options": { | |||
50 | "include_usage": true | "include_usage": true | |||
51 | }, | }, | |||
52 | "seed": 0, | "seed": 0, | 随机种子,确保结果可复现。默认为0,表示随机 | ||
53 | "stop": "string", | 谢谢 | "stop": "string", | 谢谢 | 当生成的文本中遇到这个字符串时停止生成。不能为空。 生成时停止生成的字符串列表。 返回的输出将不包含停止字符串。 指定一个字符串(通常是标点符号、特殊标记或句子结尾),当生成的文本中遇到这些字符串时,生成过程将停止 |
"stop_token_ids": [ | "stop_token_ids": [ | ||||
0 | 0 | ||||
], | ], | ||||
"best_of": 0, | "best_of": 0, | best_of 必须大于或等于 n | |||
"use_beam_search": false, | "use_beam_search": false, | 是否使用束搜索算法进行解码。当 use_beam_search 设置为 True 时,best_of 参数实际上定义了束搜索的宽度。束宽度决定了在每个时间步骤中保留多少个最有可能的候选序列。较大的束宽度可以提高生成文本的质量,但也增加了计算成本。 | |||
54 | "n": 1, | "n": 1, | |||
57 | "logit_bias": { | "logit_bias": { | |||
58 | "additionalProp1": 0, | "additionalProp1": 0, | |||
59 | "additionalProp2": 0, | "additionalProp2": 0, | |||
60 | "additionalProp3": 0 | "additionalProp3": 0 | |||
61 | }, | }, | |||
62 | "logprobs": false, | "logprobs": 0, | 默认为0,想了解模型预测情况,可以设置1以上得值,不要超过3,值太大容易导致速度过慢,会体现在返回结果中。 | ||
64 | "user": "string", | "user": "string", | 用户ID或其他标识符,可用于跟踪或限制API使用 | ||
67 | "min_p": 0, | "min_p": 0, | |||
68 | "ignore_eos": false, | "ignore_eos": false, | |||
70 | "echo": false, | "echo": false, | 默认为false。如果为true,返回结果将包含输入的提示文本 | ||
71 | "length_penalty": 1, | "length_penalty": 1, | |||
72 | "early_stopping": false, | "early_stopping": false, | |||
76 | "skip_special_tokens": true, | "skip_special_tokens": true, | |||
77 | "spaces_between_special_tokens": true, | "spaces_between_special_tokens": true, | |||
78 | "include_stop_str_in_output": false, | "include_stop_str_in_output": false, | |||
79 | "guided_json": "string", | "guided_json": "string", | |||
80 | "guided_regex": "string", | "guided_regex": "string", | |||
81 | "guided_choice": [ | "guided_choice": [ | |||
82 | "string" | "string" | |||
83 | ], | ], | |||
84 | "guided_grammar": "string", | "guided_grammar": "string", | |||
85 | "guided_decoding_backend": "string", | "guided_decoding_backend": "string", | |||
86 | "guided_whitespace_pattern": "string" | "guided_whitespace_pattern": "string" | |||
87 | "response_format": { | "response_format": { | 默认为text.定义响应格式的结构。支持json_object、text两种格式。 以json_object格式返回,容易出现不满足效果情况。 | ||
88 | "type": "text" | "type": "text" | |||
89 | }, | }, | |||
90 | |||||
91 | "add_generation_prompt": true, | "truncate_prompt_tokens": 0, | |||
92 | "add_special_tokens": false, | "suffix": "string", | 不支持,不可设置该参数 | ||
93 | "top_logprobs": 0, | ||||
94 | "tools": [ | ||||
95 | { | ||||
96 | "type": "function", | ||||
97 | "function": { | ||||
98 | "name": "string", | ||||
99 | "description": "string", | ||||
100 | "parameters": {} | ||||
101 | } | ||||
102 | } | ||||
103 | ], | ||||
104 | "tool_choice": "none", |