文章目录
- Github
- 官网
- 简介
- Dockerfile
- requirements.txt
- 构建 LangChain 镜像
- ChatOllama 示例
- Ollama 示例
- 模拟 tools
Github
官网
- https://python.langchain.com/docs/introduction/
简介
LangChain 是一个用于构建 LLM 驱动的应用程序的框架。它可以帮助您将可互操作的组件和第三方集成链接在一起,以简化 AI 应用程序开发 - 同时随着底层技术的发展做出面向未来的决策。
LangChain 的用途:
- 实时数据增强。利用 LangChain 庞大的集成库(包含模型提供商、工具、向量存储、检索器等),轻松将 LLM 连接到各种数据源和外部 / 内部系统。
- 模型互操作性。您的工程团队可以进行实验,以找到最适合您应用程序需求的选择,从而交换模型。随着行业前沿的发展,快速适应 — LangChain 的抽象概念让您不断前进,而不会失去动力。
LangChain 的生态:
- LangSmith - 有助于代理评估和可观察性。调试性能不佳的 LLM 应用程序运行,评估代理轨迹,获得生产中的可见性,并随着时间的推移提高性能。
- LangGraph - 使用我们的低级代理编排框架 LangGraph 构建能够可靠地处理复杂任务的代理。 LangGraph 提供可定制的架构、长期记忆和人机交互工作流程,并受到 LinkedIn、Uber、Klarna 和 GitLab 等公司在生产中的信任。
- LangGraph 平台- 使用专门为长期运行、有状态的工作流构建的部署平台轻松部署和扩展代理。在团队之间发现、重用、配置和共享代理 — 并使用 LangGraph Studio中的可视化原型快速迭代。
Dockerfile
# 基础镜像选择
FROM python:3.12-slim# 安装LangChain项目常见依赖
RUN apt-get update \&& apt-get install -y --no-install-recommends gcc python3-dev libssl-dev curl \&& rm -rf /var/lib/apt/lists/*# 设置优化后的pip安装参数
ENV PIP_NO_CACHE_DIR=1 \PIP_DISABLE_PIP_VERSION_CHECK=1# 安装LangChain核心依赖(示例)
COPY requirements.txt .
RUN pip install -U pip \&& pip install -r requirements.txt --no-cache-dir
requirements.txt
langchain>=0.1.0
langgraph
langsmith
langchain-community
langchain-core
langchain_ollama
langchain_deepseek
ollama>=0.1.30
sqlalchemy
python-dotenv
构建 LangChain 镜像
docker build -t langchain-dev:3.12 .
ChatOllama__56">ChatOllama 示例
- demo.py
from langchain_ollama import ChatOllamallm = ChatOllama(base_url="http://192.168.0.100:11434",model = "deepseek-r1:1.5b",temperature = 0.8,num_predict = 256,timeout = 120,format = "json"
)
print(llm.invoke("你好"))
注:http://192.168.0.100:11434 连接局域网内的 Ollama 服务。
- 使用容器执行 Python 脚本
docker run -it --rm --network="host" \
-v /home:/app \
localhost/langchain-dev:3.12 \
python /app/demo.py
- 使用容器执行 Python 脚本前安装依赖
docker run -it --rm --network="host" \
-v /home:/app \
localhost/langchain-dev:3.12 \
bash -c "pip install langchain_ollama && python /app/demo.py"
Ollama 示例
from langchain_community.llms import Ollama
from langchain_core.prompts import PromptTemplatellm = Ollama(model="deepseek-r1:1.5b", base_url="http://192.168.0.100:11434")
prompt = PromptTemplate.from_template("请用简单的语言解释以下概念:{question}")# 示例问题
question = "什么是量子纠缠?"# 调用模型
response = llm.invoke(prompt.format(question=question))
print(response)
模拟 tools
from langchain_ollama import ChatOllama
from langchain_core.prompts import ChatPromptTemplatellm = ChatOllama(model="deepseek-r1:1.5b",base_url="http://192.168.31.112:11434",temperature=0.5,format="json"
)prompt = ChatPromptTemplate.from_messages([("system", "你是一个智能助手,可以调用以下工具:{tools}请用JSON格式响应,包含'tool'和'input'字段"),("user", "{query}")
])# 构建处理链
chain = prompt | llmtools = [{"name": "weather", "desc": "天气查询"},{"name": "calculator", "desc": "打开计算器"},{"name": "ide", "desc": "打开开发工具"}
]# 示例使用
question = "计算器"
response = chain.invoke({"query": question, "tools": tools})
print(response)
- 输出
content='{"tool": "calculator", "input": "打开计算器"}' additional_kwargs={} response_metadata={'model': 'deepseek-r1:1.5b', 'created_at': '2025-03-21T11:57:21.509937Z', 'done': True, 'done_reason': 'stop', 'total_duration': 998191116, 'load_duration': 21412184, 'prompt_eval_count': 72, 'prompt_eval_duration': 93847676, 'eval_count': 14, 'eval_duration': 881793264, 'message': Message(role='assistant', content='', images=None, tool_calls=None)} id='run-7d373c77-3bc2-4de1-bbfc-2067781d8488-0' usage_metadata={'input_tokens': 72, 'output_tokens': 14, 'total_tokens': 86}