在调用大模型的过程中,将 token 设置最大值但回答仍出现中断的情况,可以从以下几个方面避免和解决:
Gemini还有其他参数可以用来控制输出。让我们来看看其中两个,首先是max_output_tokens。在生成配置中,我们可以设置max_output_tokens。这个参数决定了响应中可以生成的最大Token数。在Gemini中,一个Token大约相当于4个字符,而100个Token大约对应62-80个单词。如果你想得到更短的响应,可以将max_output_tokens设置为较低的值,比如1。相反,如果你希望得到更长的回答,可以把它设置为较高的值,比如2000。让我们把max_output_tokens设置为10,看看它如何影响输出。调用API后,我们得到了一个非常简短的响应:"一个男人坐在电脑前。"你会发现它并没有完整输出一句话,但这正是我们预期的结果。根据你的具体需求,你可能会想控制输出的长度。如果你需要非常简洁的回答,可以降低这个值。但要注意,设置得太低可能会导致回答在奇怪的地方被截断,比如句子中间。另一个我们可以设置的参数叫做stop_sequences。它允许我们指定一个字符串列表,告诉模型在生成文本时,如果遇到这些字符串就停止。如果一个指定的字符串在响应中出现多次,模型会在第一次遇到它时就停止。但要注意,这些字符串是区分大小写的。stop_sequences的一个常见用途是在构建面向特定群体(比如儿童)的聊天机器人时,过滤掉某些不适合的词。让我们来试试这个参数。我们知道图片中有一个熊猫,所以我们把"熊猫"设为stop_sequence。这意味着模型在生成描述时,一旦提到"熊猫"就会停止。现在,我们用这个新的stop_sequence参数来调用API,看看它会如何影响模型的输出。这样我们就能观察到stop_sequences是如何控制模型输出的内容和长度的。
使用提示词时,您会通过API或直接与大语言模型进行交互。你可以通过配置一些参数以获得不同的提示结果。调整这些设置对于提高响应的可靠性非常重要,你可能需要进行一些实验才能找出适合您的用例的正确设置。以下是使用不同LLM提供程序时会遇到的常见设置:Temperature:简单来说,temperature的参数值越小,模型就会返回越确定的一个结果。如果调高该参数值,大语言模型可能会返回更随机的结果,也就是说这可能会带来更多样化或更具创造性的产出。我们目前也在增加其他可能token的权重。在实际应用方面,对于质量保障(QA)等任务,我们可以设置更低的temperature值,以促使模型基于事实返回更真实和简洁的结果。对于诗歌生成或其他创造性任务,你可以适当调高temperature参数值。Top_p:同样,使用top_p(与temperature一起称为核采样的技术),可以用来控制模型返回结果的真实性。如果你需要准确和事实的答案,就把参数值调低。如果你想要更多样化的答案,就把参数值调高一些。一般建议是改变Temperature和Top P其中一个参数就行,不用两个都调整。Max Length:您可以通过调整max length来控制大模型生成的token数。指定Max Length有助于防止大模型生成冗长或不相关的响应并控制成本。Stop Sequences:stop sequence是一个字符串,可以阻止模型生成token,指定stop sequences是控制大模型响应长度和结构的另一种方法。例如,您可以通过添加“11”作为stop sequence来告诉模型生成不超过10个项的列表。Frequency Penalty:frequency penalty是对下一个生成的token进行惩罚,这个惩罚和token在响应和提示中出现的次数成比例,frequency penalty越高,某个词再次出现的可能性就越小,这个设置通过给重复数量多的Token设置更高的惩罚来减少响应中单词的重复。
插入文本是测试版中的新功能,您可能需要修改使用API的方式以获得更好的结果。以下是一些最佳实践:使用max_tokens > 256。模型在插入较长完成时效果更好。如果max_tokens太小,则模型可能会在连接后缀之前被截断。请注意,即使使用更大的max_tokens,在生成token数量方面也只会收取实际生成token数对应的费用。优先选择finish_reason =="stop"。当模型到达自然停止点或用户提供的停止序列时,它将设置finish_reason为“stop”。这表明该模型已成功连接到后缀,并且是完成质量良好的一个很好信号。这对于在n>1或重新采样(见下一点)时选择几个完成之间进行选择尤其相关。重新采样3-5次。虽然几乎所有完成都与前缀相连,但在较难情况下,模型可能难以连接后缀。我们发现重新采样3或5次(或者使用k=3,5的best_of),并挑选具有“stop”作为其finish_reason的样本可以成为解决此类问题有效方法之一。在重新采样时,通常希望温度较高以增加多样性。注意:如果所有返回的示例都具有finish_reason == “length”,则很可能max_tokens太小了,在自然地连接提示和后缀之前模型就耗尽了token数,请考虑增加max_tokens再进行重试。尝试给出更多线索.在某些情况下,为了更好地帮助模型生成内容,您可以通过提供一些示例来给出线索,让该模型能够遵循这些示例来确定自然停顿处。