分类
Langchain
AI相关
2026-06-23
5

作用

让Agent开发更顺手的工具集合

  • 连接外部数据库
  • 记东西
  • 用工具
  • 复杂任务拆解

安装

https://docs.langchain.com/oss/python/integrations/providers/overview

# 主要依赖
uv add langchain
# 对应的模型依赖
uv add langchain-openai
uv add langchain-deepseek
uv add langchain-ollama

基础代码

import os
from langchain.chat_models import init_chat_model

# 方式1:直接设置 Key(测试用)
os.environ["DEEPSEEK_API_KEY"] = "sk-xxx"

# 方式2:使用 .env 文件(推荐,需先安装 python-dotenv)
# from dotenv import load_dotenv
# load_dotenv()  # 自动读取 .env 文件中的 DEEPSEEK_API_KEY

# 初始化模型
model = init_chat_model(
    model="deepseek-chat",           # 使用的模型名称
    model_provider="deepseek",       # 指定提供商为 deepseek
    temperature=0.7                  # 可选:控制随机性
)

# 调用模型
response = model.invoke("你好,请介绍一下你自己")
print(response.content)

或ollama

from langchain.chat_models import init_chat_model

model = init_chat_model(
    model="qwen3.5:4b",           # 你的 Ollama 模型名
    model_provider="ollama",     # 指定提供商为 ollama
    temperature=0.7              # temperature 参数同样适用
)

# 调用模型,这部分代码完全不用变
response = model.invoke("你好,请介绍一下你自己")
print(response.content)

流式调用

from langchain.chat_models import init_chat_model

model = init_chat_model(
    model="qwen3.5:4b",
    model_provider="ollama",
    temperature=0.7
)

# 使用 stream() 方法进行流式输出
for chunk in model.stream("你好,请介绍一下你自己"):
    print(chunk.content, end="", flush=True)  # end="" 避免换行,flush=True 实时输出

思考内容

from langchain.chat_models import init_chat_model

model = init_chat_model(
    model="qwen3.5:4b",
    model_provider="ollama",
    temperature=0.7,
    reasoning=True  # 🔑 关键参数:开启思考模式
)

# 流式输出时,思考内容会被分离到 additional_kwargs 中
for chunk in model.stream("请问 1+1=?中文交流"):
    # 打印思考内容(如果存在)
    reasoning = chunk.additional_kwargs.get("reasoning_content")
    if reasoning:
        print(f"{reasoning}", end="", flush=True)

    # 打印正式回答
    if chunk.content:
        print(chunk.content, end="", flush=True)

智能体

# 智能体
from langchain.agents import create_agent
from langchain.chat_models import init_chat_model

agent = create_agent(init_chat_model(
    model="qwen3.5:4b",
    model_provider="ollama",
    temperature=0.7,
))

response = agent.invoke({
    "messages": [
        {
            "role": "user",
            "content": "你好呀"
        }
    ]
})

print(response)

或流式

# 智能体
from langchain.agents import create_agent
from langchain.chat_models import init_chat_model

agent = create_agent(init_chat_model(
    model="qwen3.5:4b",
    model_provider="ollama",
    temperature=0.7,
))

messages = agent.stream(
    {
        "messages": [
            {
                "role": "user",
                "content": "你好呀"
            }
        ],
    },
    stream_mode="messages"
)

"""
模式	             正确写法	       用途
LLM Tokens	     "messages"	   逐 token 流式输出,实现打字机效果
Agent Progress	 "updates"	   监控每个 agent step 后的状态更新
Values	         "values"	   获取每个 step 后的完整状态
Custom	         "custom"	   自定义事件
"""

for token, metadata in messages:
    if token.content:
        print(token.content, end="", flush=True)

消息类型

# 智能体
from langchain.agents import create_agent
from langchain.chat_models import init_chat_model
from langchain_core.messages import SystemMessage, HumanMessage, AIMessage, ToolMessage

agent = create_agent(init_chat_model(
    model="qwen3.5:4b",
    model_provider="ollama",
    temperature=0.7,
))

response = agent.invoke(
    {
        "messages": [
            SystemMessage(content="请使用中文交流"),
            HumanMessage(content="你好呀")
        ],
    }
)

for message in response['messages']:
    message.pretty_print()

多模态

# 智能体
from langchain.agents import create_agent
from langchain.chat_models import init_chat_model
from langchain_core.messages import SystemMessage, HumanMessage, AIMessage, ToolMessage
import base64


# 图片转base64
def encode_image(image_path):
    with open(image_path, 'rb') as image_file:
        bin_content = image_file.read()
        return base64.b64encode(bin_content).decode("utf-8")


agent = create_agent(init_chat_model(
    model="qwen3.5:4b",
    model_provider="ollama",
    temperature=0.7,
))

response = agent.invoke(
    {
        "messages": [
            SystemMessage(content="请使用中文交流"),
            HumanMessage(content=[
                {
                    "type": "image",
                    "base64": encode_image("22.png"),
                    "mime_type": "image/png",
                },
                {
                    "type": "text",
                    "text": "图片中有什么?"
                }
            ])
        ],
    }
)

for message in response['messages']:
    message.pretty_print()

系统提示词

因为是固定的,每次对话都有,使用在创建智能体的时候加入才合适

# 智能体
from langchain.agents import create_agent
from langchain.chat_models import init_chat_model
from langchain_core.messages import SystemMessage, HumanMessage, AIMessage, ToolMessage

agent = create_agent(
    init_chat_model(
        model="qwen3.5:4b",
        model_provider="ollama",
        temperature=0.7,
    ),
    system_prompt="请使用中文交流"
)

response = agent.invoke(
    {
        "messages": [
            HumanMessage(content="你好呀")
        ],
    }
)

for message in response['messages']:
    message.pretty_print()

结构化输出

# 智能体
from langchain.agents import create_agent
from langchain.chat_models import init_chat_model
from langchain_core.messages import SystemMessage, HumanMessage, AIMessage, ToolMessage
from pydantic import BaseModel


class DemoTemp(BaseModel):
    name: str
    age: int


agent = create_agent(
    init_chat_model(
        model="qwen3.5:4b",
        model_provider="ollama",
        temperature=0.7,
    ),
    system_prompt="请使用中文交流",
    response_format=DemoTemp # 指定
)

response = agent.invoke(
    {
        "messages": [
            HumanMessage(content="给我3个人")
        ],
    }
)

for message in response['messages']:
    message.pretty_print()

工具调用

from langchain.agents import create_agent
from langchain.chat_models import init_chat_model
from langchain_core.messages import SystemMessage, HumanMessage, AIMessage, ToolMessage
from langchain_core.tools import tool


@tool
def get_weather():
    """获取当前的天气情况"""
    return "贵阳今日温度28摄氏度"


agent = create_agent(
    init_chat_model(
        model="qwen3.5:4b",
        model_provider="ollama",
        temperature=0.7,
    ),
    tools=[get_weather]
)

response = agent.invoke(
    {
        "messages": [
            HumanMessage(content="今天天气如何?")
        ],
    }
)

for message in response['messages']:
    message.pretty_print()
目录
统计
21
分类
206
文档
2
坚持