核心内容摘要
探索生命奇迹:精粹的奥秘与传承
首先我们需要安装ollama官方网站为https://ollama.com/下载好了以后我们需要下载deepseek模型可以使用ollama run deepseek-r1:
5b完成前面两部准备工作以后我们就可以开启langchain的学习之路了。
本地大模型调用方法首先我们需要安装langchain包pip install langchain
1.
1然后需要安装ollama集成库pip install langchain-ollama
1.
0调用
代码实例from langchain_ollama import ChatOllama # 初始化大模型 llm ChatOllama( modeldeepseek-r1:
5b, base_url http://
127.
0.
1:11434, temperature
7, ) # 调用大模型 res llm.invoke(你好你是谁) print(res.content)通过API调用大模型首先我们需要安装langchain与deepseek的集成包pip install langchain-deepseek
1.
0调用deepseek我们需要去deepseek官网https://www.deepseek.com/去申请一个apikey并且放到我们的环境变量当中from langchain_deepseek import ChatDeepSeek import os # 初始化大模型 llm ChatDeepSeek( modeldeepseek-chat, api_keyos.environ[DEEPSEEK_API_KEY], ) # 调用模型 print(llm.invoke(你好你是).content)调用阿里大模型我们需要去阿里百炼获取apikeyhttps://bailian.console.aliyun.com/此外我们还需要安装langchain-openai库pip install langchain-openaifrom langchain_openai import ChatOpenAI import os llm ChatOpenAI( base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1, modelqwen-plus, api_keyos.environ[DASHSCOPE_API_KEY], ) print(llm.invoke(11等于多少).content)大模型选择策略LLMsLLMs特点功能简单仅支持一问一答的纯文本交互不支持工具调用、结构化输出。
应用场景适用于无复杂逻辑的文本交互场景日常闲聊如讲笑话、聊生活基础知识问答如“地球周长是多少”短文本创作如写打油诗、小段子。
from langchain_ollama import OllamaLLM # 初始化大模型 llm OllamaLLM( modeldeepseek-r1:
5b, base_url http://
127.
0.
1:11434, temperature
7, ) result llm.invoke(你好你是) print(result)LLMs因功能局限目前实际开发中较少使用复杂场景建议选择支持工具调用、结构化输出的大模型类型。
大模型选择策略ChatModelChatModel特点支持多轮对话采用结构化消息格式区分system/user/assistant角色可保留上下文语境比基础LLMs更适合交互场景。
应用场景适用于需要上下文记忆的交互场景智能客服记住用户历史问题连贯解答聊天机器人多轮闲聊、主题对话任务引导分步指导用户完成操作如注册流程。
from langchain_ollama import ChatOllama # 初始化大模型 llm ChatOllama( modeldeepseek-r1:
5b, base_url http://
127.
0.
1:11434, temperature
7, ) # 多轮消息列表含上下文 messages [ {role: system, content: 你是贴心助手需记住用户偏好}, {role: user, content: 我喜欢科幻电影}, {role: user, content: 推荐几部类似的} ] response llm.invoke( messages) print(response.content) # 会基于“喜欢科幻电影”的上下文推荐大模型消息格式作用标准化多轮对话的上下文传递明确角色系统、用户、助手与内容保证大模型交互的连贯性和准确性。
类型SystemMessage定义大模型的角色、规则如“你是C/C语言专家”。
HumanMessage用户的输入内容。
AIMessage大模型的输出内容调用时一般无需手动构造接收回复时使用。
from langchain_ollama import ChatOllama from langchain_core.messages import SystemMessage, HumanMessage # 初始化大模型 llm ChatOllama( modeldeepseek-r1:
5b, base_urlhttp://
127.
0.
1:11434, temperature
7, ) # 构造消息列表 langchain_messages [ SystemMessage(content你是一个C/C语言专家), HumanMessage(content帮我用C语言写一个冒泡排序算法) ] # 调用模型 result llm.invoke(langchain_messages) print(result.content)消息需严格区分角色类型SystemMessage/HumanMessage/AIMessage不可混淆。
多轮对话时消息列表需按“系统 → 用户 → 助手 → 用户 → 助手...”的逻辑顺序排列保证上下文连贯。
大模型流式输出传统 lvm.invoke 需等大模型生成全部内容后才输出流式输出lvm.stream可逐字/逐段返回结果提升交互实时性适合聊天、实时内容展示等场景。
from langchain_ollama import ChatOllama from langchain_core.messages import SystemMessage, HumanMessage # 构造消息 langchain_messages [ SystemMessage(content你是一个C/C语言专家), HumanMessage(content帮我用C语言写一个冒泡排序算法) ] # 初始化大模型 llm ChatOllama( modeldeepseek-r1:
5b, base_url http://
127.
0.
1:11434, temperature
7, ) # 流式输出调用 for chunk in llm.stream(inputlangchain_messages): print(chunk.content, end)流式输出返回的是生成器对象需通过循环迭代获取每段输出部分大模型对流式支持存在差异需确认所使用的模型是否兼容流式调用。
工具调用Function Calling大模型虽智能但无法直接执行发送邮件、网页数据抓取、复杂计算等操作。
Function Calling可让大模型自主选择并调用外部工具函数拓展其能力边界实现“思考 执行”的闭环。
from langchain_core.messages import AIMessage, ToolMessage from langchain_ollama import ChatOllama from langchain_core.tools import tool # 定义工具函数 tool def plus_tool(a: int, b: int) - int: 计算两数相加 参数1:a整数 参数2:b整数 print(f调用工具plus_tool参数a{a}, b{b}) return a b tool def sub_tool(a: int, b: int) - int: 计算两数相减 print(f调用工具sub_tool参数a{a}, b{b}) return a - b # 工具绑定将工具与大模型关联 tools [plus_tool, sub_tool] # 初始化大模型 llm ChatOllama( modelqwen3:4b, base_url http://
127.
0.