2026/4/18 19:11:06
网站建设
项目流程
怎么查看网站备案号,dedecms企业网站模板免费下载,网站设计主题,企业模版本文详细介绍了LangChain中Model的使用方法#xff0c;包括基础调用、流式/批量处理、多轮对话#xff0c;以及Tool Calling功能实现、结构化输出、多模态处理和思维链等高级特性。还涵盖了限流控制、用量统计和运行时配置等实用功能#xff0c;帮助开发者快速掌握LangChain…本文详细介绍了LangChain中Model的使用方法包括基础调用、流式/批量处理、多轮对话以及Tool Calling功能实现、结构化输出、多模态处理和思维链等高级特性。还涵盖了限流控制、用量统计和运行时配置等实用功能帮助开发者快速掌握LangChain Model的使用提升开发效率。看完本篇文章后你会了解• Model 的基础用法独立使用 / 搭配 Agent并使用流式/非流式/批量调用模型• 如何使用模型的 Tool Calling 功能• 如何让模型返回结构化的输出• 以及更多高阶应用多模态、思考/非思考、限流等等也欢迎你收藏本篇文章后续用时随手一查即可上线LangChain 中的 ModelLangChain 中的 Model主要使用大语言模型它能够像人类一样理解并生成文本具备强大的文档撰写、翻译、总结等能力。除此之外许多模型还支持•工具调用调用外部工具如网络搜索、API 调用并把结果用于回答•结构化输出模型可以返回结构化的数据如 JSON、XML 等而不是普通的文本•多模态支持处理文本、图像、音频、视频等多种模态数据•深度思考模型可以进行深度思考应对更复杂的任务如多轮对话、复杂的问题求解等模型的基础用法以 DeepSeek 为例展示模型的基础用法from langchain.chat_models import init_chat_model# 初始化一个模型model init_chat_model(modeldeepseek-chat, # 模型名称 base_urlhttp://10.0.41.5:8000/v1/, # 模型的 API 地址不填则默认为官方地址也可以填写自定义的地址 api_keysk-xxx, # 模型的 API 密钥 model_providerdeepseek, # 模型的供应商 max_tokens1024, # 模型的最大输出 token 数 top_p0.95, # 模型的 top_p 参数用于控制生成文本的多样性 temperature 0.3, # 模型的温度参数用于控制生成文本的随机性 extra_body{thinking: {type: enabled}} # 模型的额外参数用于控制生成文本的行为 )response model.invoke(你好请介绍你一下你自己你是哪个模型用一个词回答我)print(f模型回答内容{response.content})# 模型回答内容DeepSeek多轮对话场景下conversation [ SystemMessage(You are a helpful assistant that translates English to Chinese.), HumanMessage(Translate: I love programming.), AIMessage(我爱编程), HumanMessage(I love building applications.)]response model.invoke(conversation)print(f模型回答{response.content})# 模型回答我喜欢开发应用程序。流式调用流式调用是指模型在生成文本时以流的形式返回结果而不是一次性返回完整的文本。这在处理长文本或实时应用场景下非常有用因为它可以及时地将生成的内容展示给用户而不是等待模型完成整个生成过程。流式调用的示例如下content_chunk Nonefor chunk in model.stream(天是什么颜色的): for block in chunk.content_blocks: if block[type] text: content_chunk block[text] if content_chunk is None else content_chunk block[text] print(content_chunk)print(final result)print(fContent: {content_chunk})# 这是一个# 这是一个看似# 这是一个看似简单却# 这是一个看似简单却非常# 这是一个看似简单却非常有趣的问题你可以看到流式调用的输出是一个字符一个字符地出来的而不是一次性返回完整的文本这极大的提升了用户体验。批量调用批量调用是指模型在一次调用中处理多个输入而不是逐个处理。# 你可以一次性提交多个问题模型会并行处理它们responses model.batch([ 为什么鹦鹉的羽毛有很多颜色, 为什么飞机会飞, 什么是量子计算])for response in responses: print(response.content)为了不对模型造成过大压力你可以设置max_concurrency参数来限制并发调用的数量。responses model.batch([ 为什么鹦鹉的羽毛有很多颜色, 为什么飞机会飞, 什么是量子计算], config{ max_concurrency: 3,})当提交的问题数量超过max_concurrency时模型会按照max_concurrency的数量并行处理而其他问题则会等待。在处理三个问题时并发数量分别为 1、2、3 调用计时如下1 个并发下的总耗时42721 ms 2 个并发下的总耗时30586 ms 3 个并发下的总耗时21686 msTool Calling工具调用是指模型在生成文本时调用外部工具如网络搜索、API 调用并把结果用于回答。这在需要模型具备一定的外部知识或能力时非常有用例如回答需要实时数据或执行复杂计算的问题。# 定义一个工具tooldef get_datetime() - str: 获取当前时间。 return datetime.now().strftime(%Y-%m-%d %H:%M:%S)# 1. 用户的问题messages [HumanMessage(content现在是几点)]# 1.1 调用大模型让模型决定是否调用工具tool_response model.invoke(messages)# 1.2 把模型返回的结果放在 conversation 里面messages.append(tool_response)for tool_call in tool_response.tool_calls: tool_call_message get_datetime.invoke(tool_call) # 2 调用工具 print(ftool call message:{tool_call_message}) # 2.1 把工具调用的结果放在 conversation 里面 messages.append(tool_call_message)print(messages)# 3 再次调用大模型final_response model.invoke(messages)print(f最终结果是{final_response.content}) 关于每一次 Tool Call 的处理流程中消息的变化如下  | 状态 | 触发动作 | 消息数量 | 关键内容 | | --- | --- | --- | --- | | **S1** | 用户输入 | 1 | HumanMessage: 现在是几点 | | **S2** | 第一次模型调用 | 2 | AIMessage: 识别需要工具 | | **S3** | 执行工具调用 | 3 | ToolMessage: 返回时间数据 | | **S4** | 最终模型回答 | 1 | AIMessage: 最终自然语言回答 | 相信看了上面这段描述基本就可以理解工具调用的整个流程了 ### 并行调用 **并行调用**是指模型在一次调用中同时处理多个工具调用而不是逐个处理。 这在需要同时调用多个工具时非常有用例如同时获取多个城市的天气。 plaintext ## 定义两个模型tooldef get_datetime() - str: 获取当前时间。 return datetime.now().strftime(%Y-%m-%d %H:%M:%S)tooldef get_weather(city: str) - str: 获取指定城市的天气。 return f{city}今天的天气是晴天室温 25摄氏度非常舒适# 1. 用户的问题messages [HumanMessage(content今天是几号北京天气怎么样)]# 1.1 调用大模型tool_response model.invoke(messages)# 1.2 把模型返回的结果放在 conversation 里面messages.append(tool_response)for tool_call in tool_response.tool_calls: tool_call_message None if tool_call[name] get_weather: tool_call_message get_weather.invoke(tool_call) elif tool_call[name] get_datetime: tool_call_message get_datetime.invoke(tool_call) # 2 调用工具 print(ftool call message:{tool_call_message}) # 2.1 把工具调用的结果放在 conversation 里面 if tool_call_message: messages.append(tool_call_message)print(messages)# 3 再次调用大模型final_response model.invoke(messages)print(f最终结果是{final_response.content})# 调用的结果可以看到模型分别查了今天的时间和北京的天气# **今天是2025年12月25日 星期四**# **北京天气情况**# - 天气晴天 ☀️# - 温度25摄氏度# - 体感非常舒适# 今天北京天气很好阳光明媚温度适宜是个出门活动的好日子结构化输出模型可以指定按照自定义的 Python 数据结构或 Json 结构来返回结果这在进行逻辑处理、数据解析等场景非常有用。Python 数据结构# 定义数据结构class Movie(BaseModel): A movie with details. title: str Field(..., description电影名字) year: int Field(..., description电影上映年份) director: str Field(..., description电影导演) rating: float Field(..., description电影的评分从 1-10)model_with_structure model.with_structured_output(Movie)response model_with_structure.invoke(告诉我电影盗梦空间的一些详情)print(response) # 模型输出Movie(titleInception, year2010, directorChristopher Nolan, rating8.8)Json 结构你可以通过定义一个 json_schema 来指定模型返回的 Json 结构补充json_schema 是一个 Json 格式的对象用于描述 Json 数据的结构。你可以在 Json Schema 官方文档 中了解更多关于 json_schema 的详细信息。json_schema { title: Movie, description: A movie with details, type: object, properties: { title: { type: string, description: 电影名字 }, year: { type: integer, description: 电影上映年份 }, director: { type: string, description: 电影导演 }, rating: { type: number, description: 电影的评分从 1-10 } }, required: [title, year, director, rating]}model_with_structure model.with_structured_output( json_schema, methodjson_schema,)response model_with_structure.invoke(告诉我电影盗梦空间的一些详情)print(response)# 输出结果{title: 盗梦空间, year: 2010, director: 克里斯托弗·诺兰, rating: 8.8}多模态模型可以同时处理文本、图像、语音等多模态数据实现更复杂的任务。我们先加载一张 google 的 logo 图片然后让模型识别这张图片。plaintextwith open(“google.png”, “rb”) as logo: # 读取 google.png 并转换为 base64 logo_base64 base64.b64encode(logo.read()).decode(“utf-8”) message [ {“role”: “user”, “content”: [ {“type”: “text”, “text”: “这是什么 logo”}, # 我们可以把图片转换为 base64 编码然后放在 message 里面 {“type”: “image_url”, “image_url”: {“url”: fdata:image/png;base64,{logo_base64}}} # 也可以使用图片的 url 来表示图片但需要注意的是图片的 url 必须是公开可访问的否则模型无法识别 # {“type”: “image_url”, “image_url”: {“url”: “https://hx-zsy.oss-cn-chengdu.aliyuncs.com/img/google.png”}} ]} ] print(message) response model.invoke(message) print(response) # 模型输出这是Google谷歌的官方标志Logo。思维链 --- 有些模型如 DeepSeek-R1 等支持思维链Chain of Thought功能即模型可以根据用户的问题一步一步地思考并回答。 plaintext from langchain.chat_models import init_chat_modelmodel init_chat_model(modeldeepseek-reasoner, api_basehttp://10.0.41.2:8080/v1/, api_keysk-xxxxx, model_providerdeepseek, # DeepSeek 官方开启思维链功能 extra_body{reasoning: {enabled: True}}, # 本地部署的 DeepSeek 开启思维链功能 # extra_body{chat_template_kwargs: {thinking: True}}, temperature0.6)response model.invoke(天是什么颜色的)print(f模型思考内容{response.additional_kwargs.get(reasoning_content)})print(f思考结束)print(f模型回答内容{response.content})# 模型思考内容好的用户问“天是什么颜色的”看起来是个简单的问题但得仔细想想背后的意图。……# 思考结束# 模型回答内容这是一个看似简单却非常有趣的问题……# 以及流式处理reason_chunk Nonecontent_chunk Nonefor chunk in model.stream(天是什么颜色的): for block in chunk.content_blocks: if block[type] reasoning and (reasoning : block.get(reasoning)): reason_chunk block.get(reasoning) if reason_chunk is None else reason_chunk block.get(reasoning) print(fReasoning: {reason_chunk}) elif block[type] text: content_chunk block[text] if content_chunk is None else content_chunk block[text] print(content_chunk)print(final result)print(fReasoning: {reason_chunk})print(fContent: {content_chunk})服务端 Tool Call有一些模型原生支持了服务端的工具调用模型可以在一个对话轮次里执行网页搜索、调用外部 API 等操作并分析结果。比如你可以直接再 chatgpt 里使用 web_search 工具来搜索今天的新闻。from langchain.chat_models import init_chat_modelmodel init_chat_model(gpt-4.1-mini)tool {type: web_search}model_with_tools model.bind_tools([tool])response model_with_tools.invoke(今天有哪些 NBA 新闻)response.content_blocks当然后续在制作智能体时我们也可以内置一些工具来供外部直接使用。限流为了避免超过模型的限流阈值我们可以在初始化模型时提供一个 rate_limiter 参数来控制请求的速率。from langchain_core.rate_limiters import InMemoryRateLimiterrate_limiter InMemoryRateLimiter( requests_per_second0.1, # 每 10 秒最多 1 个请求 check_every_n_seconds0.1, # 每 100ms 检查一次是否允许请求 max_bucket_size10, # 控制最大突发请求数量即“令牌桶”中允许的最大瞬时请求峰值。)model init_chat_model( modelgpt-5, model_provideropenai, rate_limiterrate_limiter )用量统计利用 callback 可以方便地统计模型的用量from langchain.chat_models import init_chat_modelfrom langchain_core.callbacks import UsageMetadataCallbackHandlermodel_1 init_chat_model(modeldeepseek-chat, # 模型名称 base_urlhttp://10.0.41.2:8000/v1/, model_provideropenai)model_2 init_chat_model(modelglm-4.7, # 模型名称 base_urlhttp://10.0.41.5:8000/v1/, model_provideropenai)callback UsageMetadataCallbackHandler()result_1 model_1.invoke(Hello, config{callbacks: [callback]})result_2 model_2.invoke(Hello, config{callbacks: [callback]})print(fdeepseek-chat 用量{callback.usage_metadata.get(deepseek-chat)})print(fglm-4.7 用量{callback.usage_metadata.get(glm-4.7)})# 输出结果# deepseek-chat 用量{input_tokens: 5, output_tokens: 60, total_tokens: 65, input_token_details: {}, output_token_details: {}}# glm-4.7 用量{input_tokens: 6, output_tokens: 236, total_tokens: 242, input_token_details: {}, output_token_details: {}}运行时配置在调用模型时我们可以通过传递一些额外参数来传递一些运行时的配置如用户id、会话id等。这些动态的配置通常在会话追踪、监控、日志记录等场景中非常有用。response model.invoke( 帮我查一下我还有多少天假期, config{ run_name: joke_generation, # 此次运行的自定义名称 tags: [humor, demo], # 用于分类的标签 metadata: {user_id: 123}, # 自定义元数据 callbacks: [my_callback_handler], # 回调处理器 })运行时模型配置做过大模型开发的同学可能会知道在调用模型时我们可以通过传递一些额外参数来传递一些运行时的配置如模型的温度、top_p 等。我们可以在调用模型时动态声明这些参数如from langchain.chat_models import init_chat_modelmodel init_chat_model(modeldeepseek-chat, # 模型名称 base_urlhttp://10.0.41.2:8000/v1/, # 允许修改的参数 configurable_fields(model, model_provider, temperature, max_tokens), model_provideropenai)response model.invoke( 请介绍一下你自己, config{configurable: {max_tokens: 10}},)print(fcompletion_tokens: {response.response_metadata.get(token_usage).get(completion_tokens)}, content: {response.content})response model.invoke( 请介绍一下你自己, config{configurable: {max_tokens: 1}},)print(fcompletion_tokens: {response.response_metadata.get(token_usage).get(completion_tokens)}, content: {response.content})# 输出结果# completion_tokens: 10, content: 你好我是DeepSeek由深度求# completion_tokens: 1, content: 你好总结一口气学完你会发现 LangChain 的 Model 层就像“万能插座”•基础调用、流式/批量、多轮对话三行代码就能跑•Tool Calling让模型“长出手脚”能查天气、调 API•结构化输出直接变 Python 对象省去正则拆 JSON 的噩梦•多模态、思维链、限流、用量统计、运行时改参……全是 LangChain 帮你封装好的“外挂”。AI时代未来的就业机会在哪里答案就藏在大模型的浪潮里。从ChatGPT、DeepSeek等日常工具到自然语言处理、计算机视觉、多模态等核心领域技术普惠化、应用垂直化与生态开源化正催生Prompt工程师、自然语言处理、计算机视觉工程师、大模型算法工程师、AI应用产品经理等AI岗位。掌握大模型技能就是把握高薪未来。那么普通人如何抓住大模型风口AI技术的普及对个人能力提出了新的要求在AI时代持续学习和适应新技术变得尤为重要。无论是企业还是个人都需要不断更新知识体系提升与AI协作的能力以适应不断变化的工作环境。因此这里给大家整理了一份《2026最新大模型全套学习资源》包括2026最新大模型学习路线、大模型书籍、视频教程、项目实战、最新行业报告、面试题、AI产品经理入门到精通等带你从零基础入门到精通快速掌握大模型技术由于篇幅有限有需要的小伙伴可以扫码获取1. 成长路线图学习规划要学习一门新的技术作为新手一定要先学习成长路线图方向不对努力白费。这里我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。2. 大模型经典PDF书籍书籍和学习文档资料是学习大模型过程中必不可少的我们精选了一系列深入探讨大模型技术的书籍和学习文档它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。书籍含电子版PDF3. 大模型视频教程对于很多自学或者没有基础的同学来说书籍这些纯文字类的学习教材会觉得比较晦涩难以理解因此我们提供了丰富的大模型视频教程以动态、形象的方式展示技术概念帮助你更快、更轻松地掌握核心知识。4. 大模型项目实战学以致用当你的理论知识积累到一定程度就需要通过项目实战在实际操作中检验和巩固你所学到的知识同时为你找工作和职业发展打下坚实的基础。5. 大模型行业报告行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。6. 大模型面试题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我们将提供精心整理的大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。为什么大家都在学AI大模型随着AI技术的发展企业对人才的需求从“单一技术”转向 “AI行业”双背景。企业对人才的需求从“单一技术”转向 “AI行业”双背景。金融AI、制造AI、医疗AI等跨界岗位薪资涨幅达30%-50%。同时很多人面临优化裁员近期科技巨头英特尔裁员2万人传统岗位不断缩减因此转行AI势在必行这些资料有用吗这份资料由我们和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理现任上海殷泊信息科技CEO其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证服务航天科工、国家电网等1000企业以第一作者在IEEE Transactions发表论文50篇获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。大模型全套学习资料已整理打包有需要的小伙伴可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】