模型配置信息profileLangChain1.1及更高版本可以通过profile属性查看模型的配置信息这是LangChain针对模型的能力画像但是否存在取决于LangChain在集成模型厂商的服务时是否声明了能力画像举例1DeepSeek官方模型的能力画像输出为空说明LangChain没有声明DeepSeek官方模型的能力画像举例2CloseAI平台GPT模型的能力画像举例3OpenRouter平台gpt模型能力画像更换模型IDprofile会替换说明LangChain已声明了OpenRouter平台模型的画像注意我们当前的代码只需要OpenRouter的API_KEY不会真正发送请求不必充值查看所有初始化参数官方文档和源码注释没有给出完整的参数列表以ChatDeepSeek类为例其参数可以由自身定义或从父类BaseChatModel继承。这里通过查看ChatDeepSeek的类属性model_fields来获得完整参数列表。举例2查看ChatOpenAI支持的完整参数列表举例3查看init_chat_model的某model_provider支持的完整参数列表举例4可以查看每个字段的属性模型类的参数构成以ChatDeepSeek为例完整参数列表由如下几部分构成客户端与连接参数这类参数决定了代码“怎么连到服务端”而不是“让模型怎么生成模型推理参数Model Inference这些是直接传递给DeepSeek模型API的参数决定了生成内容的质量和风格LangChain框架通用参数由LangChain的BaseChatModel定义所有其子类ChatXX都具备的用于管理LangChain内部的逻辑如日志、回调、元数据仅在内部生效高级与特定扩展参数这类参数通常用于特定场景、或为了保持与OpenAI协议的兼容性而存在1、底层客户端访问: client , async_client , root_client 这些通常是内部生成的 SDK 实例不建议在初始化时手动传参。2、透传参数: model_kwargs , extra_body 如果你想传递 DeepSeek API 支持但 LangChain 还没定义的参数可以写在这里。3、功能开关: disable_streaming , include_response_headers 决定是否在输出中包含Header。4、兼容性参数: openai_organization , service_tier , store 这些多为 OpenAI 遗留参数DeepSeek 实际使用较少。参数model_kwargs这里用于存放那些OpenAI Compatible API支持但LangChain没有直接列出的字段如用于支持Function Call的tools字段说明此处为了演示 model_kwargs 的作用直接传递了 tools 字段实际开发中我们会使用专门的工具调用接口不会采用这种原始的方式。查阅OpenAI Chat Completions文档可以看到官方支持的所有请求字段。from langchain.chat_modelsimportinit_chat_model from dotenvimportload_dotenv from richimportprint as rprint# 从.env文件中加载环境变量load_dotenv(overrideTrue)modelinit_chat_model(modeldeepseek:deepseek-v4-flash,model_kwargs{tools:[{type:function,function:{name:get_weather,description:Get weather of a location, the user should supply a location first.,parameters:{type:object,properties:{location:{type:string,description:The city and state, e.g. San Francisco, CA,}},required:[location]},}},]})# 向模型发送单条数据responsemodel.invoke(你好今天北京的天气如何)# 打印响应rprint(response)可以看到输出包含了 tool_calls 字段说明工具被模型正确识别了参数extra_body这里用于存放模型厂商基于OpenAI API协议扩展的字段查阅OpenAI Chat Completions文档和DeepSeek对话补全API文档可知 thinking 是DeepSeek扩展的字段用于控制是否启用思考模式。需要记住哪些参数记住常见参数及用法即可如果需要精细控制模型输出可以查阅OpenAI和特定模型供应商的官方文档通过model_kwargs或extra_body传递模型调用中config参数在调用模型时如使用invoke(),ainvoke(),stream(),batch()等方法时我们可以传入config参数def invoke(self, input: LanguageModelInput, config: RunnableConfig|NoneNone, *, stop: list[str]|NoneNone, **kwargs: Any,)-AIMessageconfig参数允许在调用模型时动态地配置和控制模型的行为而无需在初始化时就固定所有参数这为应用带来了极大的灵活性和可维护性关于config中可配参数的解释参考https://reference.langchain.com/python/langchain-core/runnables/config/RunnableConfigmodel.invoke(你好,config{run_name:...,# 在LangSmith中这次运行会显示为指定名称tags:[test,development],# 打上标签便于分类查找metadata:{user_id:123},# 记录用户IDcallbacks:[custom_handler],# 启用自定义回调函数configurable:{model:deepseek-reasoner,# 配置模型参数temperature:0.7,# 配置温度参数max_tokens:100# 配置最大令牌数}})config中支持配置的参数如下说明如下config中参数 run_name 、 tags 、 callbacks 主要用在LangSmith中用于追踪、筛选和调试。metadata 可以配置用户指定的一些信息在工作流开发中当整个流程被包装为Runnable链时可以将这些参数传递给后续的链节点使用。configurable 中可配置的参数与 init_chat_model 初始化模型参数一样与在初始化模型时设置的参数如 temperature0.7的关键区别在于init_chat_model初始化参数模型的 默认设置 适用于该模型实例的大部分场景。运行时 config 单次调用的特定设置 优先级更高针对本次调用进行的特殊调整。举例1当需要处理大量输入时为了避免对模型服务造成过大压力或触发速率限制在config中使用max_concurrency参数控制最大并行数
阅读完成 · 觉得有帮助?