9. LangChain 6大核心参数详解 + 代码实战,看完就能直接用

在使用 init_chat_model 构建大模型应用时,为了适配不同的业务场景(如本地模型调试、第三方代理接入、创意内容生成、高并发接口调用等),我们通常会将最核心的 6 个参数放在 **kwargs 里透传,精准控制接口请求、鉴权及模型生成效果。

喜欢看文章的接着往下看,习惯看视频的看这里《9. LangChain 6大核心参数详解 + 代码实战,看完就能直接用》

复制代码
init_chat_model(
  model: str | None = None,
  *,
  model_provider: str | None = None,
  configurable_fields: Literal['any'] | list[str] | tuple[str, ...] | None = None,
  config_prefix: str | None = None,
  **kwargs: Any = {}
) -> BaseChatModel | _ConfigurableModel

base_url:自定义请求大模型厂商的 API 地址。之所以需要指定该参数,是因为大模型服务由不同厂商提供,各厂商的 API 端点地址各异;此外,当使用本地部署的模型、第三方代理服务或特定云服务的专属入口时,也需通过 base_url 明确请求地址,确保请求能正确路由到目标服务。

api_key:获取接口调用权限的密钥。它是厂商验证调用者身份与权限的核心凭证,只有提供有效的 api_key,才能获得接口调用权限 ------ 这既保障了厂商服务的安全可控,也能精准统计调用量、进行费用结算,防止未授权访问与滥用。

timeout:单位为秒,设置 API 请求的最大等待时长,超时自动终止请求,可避免程序因网络波动或服务响应慢而长时间阻塞。

max_retries:请求失败时的最大重试次数,默认值为 6 次,用于应对偶发的网络异常或服务限流,提升请求成功率。

temperature:温度值,模型输出的创造力开关,范围为 0-2。值越低,输出越确定严谨,适合代码生成、事实问答等场景;值越高,输出越随机有创意,适合文案创作、故事生成等场景。

|-------------|-------------------|
| temperature | 适合场景 |
| 0.0~0.3 | 代码生成、事实问答(高准确需求) |
| 0.4~0.7 | 通用对话、内容润色(均衡场景) |
| 0.8~2.0 | 创意写作、头脑风暴(高创造力需求) |

max_tokens:限制模型单次输出的最大 token 数量,避免超长回复,默认不限制,可根据业务需求控制回复长度与成本。

|------------|-------------|
| tokens | 适合场景 |
| 50~200 | 短文本(避免冗余) |
| 1024~2048 | 通用对话(平衡完整度) |
| 4096 以内 | 长文本生成(管控成本) |

以下为.env 环境配置文件的内容,记得必将其中的 API_KEY 占位值,替换为您自行在对应平台申请的有效API密钥。

复制代码
QWEN_API_KEY="你申请的API KEY"
QWEN_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"

在实现功能时,先通过load_dotenv()加载同目录下的.env文件,再用os.getenv()从.env 文件里安全获取 QWEN_BASE_URL 和 QWEN_API_KEY,避免将 API 地址和密钥直接硬编码在代码中,这是开发产品时常用的方式。

复制代码
import os
from dotenv import load_dotenv
from langchain.chat_models import init_chat_model
# @老陈说编程 哔哩哔哩 今日头条
load_dotenv()
llm = init_chat_model(model="openai:qwen3.6-plus",
                      base_url=os.getenv("QWEN_BASE_URL"),
                      api_key=os.getenv("QWEN_API_KEY"),
                      temperature=0.5,
                      max_tokens=1024)
for chunk in llm.stream("详细介绍AI大模型的应用"):
    if chunk.content:
        print(chunk.content, end="", flush=True)