
本节将详细介绍在调用模型时常用的控制参数帮助你更好地控制模型的行为。temperature——控制创造性与确定性temperature 是最常用的参数取值范围 0 到 2。它控制模型输出的随机程度。实例from langchain.chat_models import init_chat_model# 同一问题不同 temperature 的对比question 用一句话介绍菜鸟教程 RUNOOB# temperature0输出非常确定几乎每次结果一样model_low init_chat_model(deepseek:deepseek-v4-flash, temperature0)resp1 model_low.invoke(question)resp2 model_low.invoke(question)print(ftemperature0 第1次: {resp1.content})print(ftemperature0 第2次: {resp2.content})print(f两次结果相同: {resp1.content resp2.content})print()# temperature1.5输出多样化每次可能不同model_high init_chat_model(deepseek:deepseek-v4-flash, temperature1.5)resp1 model_high.invoke(question)resp2 model_high.invoke(question)print(ftemperature1.5 第1次: {resp1.content})print(ftemperature1.5 第2次: {resp2.content})运行结果temperature0 第1次: 菜鸟教程RUNOOB是一个为编程初学者提供免费教程的学习平台。 temperature0 第2次: 菜鸟教程RUNOOB是一个为编程初学者提供免费教程的学习平台。 两次结果相同: True temperature1.5 第1次: 菜鸟教程RUNOOB是一个简单易懂的编程与网络技术入门学习平台。 temperature1.5 第2次: RUNOOB菜鸟教程是深受编程新手喜爱的中文免费在线技术学习平台。temperature 值效果适用场景0 ~ 0.3输出稳定、确定每次结果几乎一致数据提取、分类、代码生成、翻译0.5 ~ 0.7适度的创造性输出自然但不偏离主题日常对话、内容总结0.8 ~ 1.2输出多样化有较多发挥空间创意写作、头脑风暴1.3 ~ 2.0输出非常随机可能出现意外内容探索性生成不太推荐用于生产temperature0 不等于完全相同。由于模型内部计算的浮点精度差异极端情况下仍可能有微小差异。如果需要绝对的确定性有些模型提供了 seed 参数。max_tokens——控制输出长度与成本max_tokens 限制模型输出的最大 Token 数。一个 Token 大约相当于 0.75 个英文单词或 0.5 个中文字。实例from langchain.chat_models import init_chat_modelmodel init_chat_model(deepseek:deepseek-v4-flash, temperature0)# max_tokens30限制输出在 30 个 Token 以内response_short model.invoke(详细介绍一下菜鸟教程 RUNOOB 平台,max_tokens30)print(f限制 30 tokens ({len(response_short.content)} 字符):)print(response_short.content)print()# max_tokens200允许更长的输出response_long model.invoke(详细介绍一下菜鸟教程 RUNOOB 平台,max_tokens200)print(f限制 200 tokens ({len(response_long.content)} 字符):)print(response_long.content)运行结果限制 30 tokens (42 字符): 菜鸟教程RUNOOB是一个面向编程初学者的在线学习平台提供各种编程语言的教程和实例。 限制 200 tokens (306 字符): 菜鸟教程RUNOOB是一个面向编程初学者的在线学习平台提供了丰富的编程教程和参考资料。 该平台涵盖了 HTML、CSS、JavaScript、Python、Java、C、C、PHP、SQL 等多种编程语言和技术。 菜鸟教程的特点包括 1. 内容系统化从基础到进阶帮助学习者逐步掌握编程知识 2. 实例丰富每个知识点都配有可运行的代码示例 3. ...max_tokens 是对输出长度的硬限制。如果设置过低模型的回答可能在句中突然截断。一般建议根据场景设置在 100-2000 之间。对于一句话回答类场景30-100 就够了对于详细解释类场景建议 500-2000。timeout 与 max_retries——网络可靠性在生产环境中网络请求可能因为各种原因失败。这两个参数帮助你控制请求行为。实例from langchain.chat_models import init_chat_model# 生产环境推荐配置model init_chat_model(deepseek:deepseek-v4-flash,# 单次请求最多等待 30 秒timeout30,# 失败后最多重试 3 次总共 4 次请求机会max_retries3,)# 模拟正常调用try:response model.invoke(菜鸟教程 RUNOOB 是什么)print(f调用成功: {response.content[:50]}...)except Exception as e:print(f调用失败: {e})参数说明建议值timeout单次请求的最大等待时间秒。None 表示不限制30~60太短容易超时太长用户体验差max_retries失败后的重试次数。0 表示不重试2~3足够处理偶发网络问题设置 timeout 和 max_retries 的费时分析假设 timeout30, max_retries3 单次成功: ~2s 第1次失败重试成功: ~2s ~2s ~4s 全部失败: 4次 × 30s 最多 120s 才抛出异常base_url——自定义 API 地址base_url 参数在你需要通过代理、中转服务或私有部署访问模型时非常有用。实例from langchain.chat_models import init_chat_model# 场景 1通过代理访问 OpenAImodel init_chat_model(deepseek:deepseek-v4-flash,base_urlhttps://your-proxy-domain.com/v1, # 代理地址)# 场景 2使用兼容 OpenAI 接口的第三方服务# 很多国产模型提供了 OpenAI 兼容接口model init_chat_model(deepseek:deepseek-v4-flash, # provider 写 openaibase_urlhttps://api.third-party.com/v1, # 但实际指向第三方api_keyyour-third-party-key, # 第三方 API Key)# 场景 3连接本地模型如 vLLM、Ollamamodel init_chat_model(openai:qwen2.5, # 本地模型名base_urlhttp://localhost:8000/v1, # 本地服务地址api_keynot-needed, # 本地通常不需要 Key)base_url 改变的是 API 端点的地址但 provider 参数决定了行为模式。比如 provideropenai 会使用 OpenAI 的消息格式即使 base_url 指向的是别的服务。确保目标服务兼容你指定的 provider 格式。其他常用参数top_p——核采样实例from langchain.chat_models import init_chat_model# top_p 是另一种控制随机性的方式# 模型只会从累积概率达到 top_p 的词中采样# top_p0.1 表示只从最高概率的 10% 的词中选择model init_chat_model(deepseek:deepseek-v4-flash,top_p0.9, # 只考虑累积概率前 90% 的词)response model.invoke(介绍菜鸟教程 RUNOOB)print(response.content[:100])一般建议只调整 temperature 或 top_p 中的一个不要同时调节。如果同时设置模型的行为可能难以预测。stop——停止序列实例from langchain.chat_models import init_chat_modelmodel init_chat_model(deepseek:deepseek-v4-flash)# stop 参数指定停止序列模型遇到这些词时会立即停止生成response model.invoke(列出五个编程学习网站每个一行,stop[\n] # 遇到换行就停止只返回第一个)print(f限制 stop[\\n]: {response.content})运行结果限制 stop[\n]: 1. 菜鸟教程RUNOOBseed——可重复性部分模型支持实例from langchain.chat_models import init_chat_model# 某些模型支持 seed 参数用于获得确定性的输出# 相同的 seed 相同的输入 相同的输出model init_chat_model(deepseek:deepseek-v4-flash, seed42, temperature0)resp1 model.invoke(介绍菜鸟教程)resp2 model.invoke(介绍菜鸟教程)print(fseed42, 结果相同: {resp1.content resp2.content})参数速查表参数类型默认值何时使用temperaturefloat因模型而异任务需要稳定性时设为 0~0.3需要创造性时设为 0.7~1.0max_tokensint模型上限输出长度需要控制时timeoutint/floatNone生产环境建议始终设置max_retriesint因模型而异网络不稳定时建议 2~3base_urlstr官方地址使用代理、中转或本地服务时top_pfloat1.0需要核采样控制时替代 temperaturestoplist[str]无需要精确控制输出结尾时