本地运行LangChain项目的完整指南

老铁们,今天我们来聊一聊如何在本地运行LangChain项目并提交你的第一段代码。对于开发容器来说,你可以查看.devcontainer文件夹。咱们的项目是通过Poetry v1.7.1+来管理依赖的。如果你用Conda,记得先创建并激活一个新的Conda环境,例如conda create -n langchain python=3.9

Poetry的安装

在安装Poetry之前,老铁们注意,如果你使用Conda或者Pyenv作为你的环境或包管理器,安装Poetry后需要告诉Poetry去使用virtualenv的Python环境,即运行命令poetry config virtualenvs.prefer-active-python true

项目包介绍

这个仓库包含多个包:

  • langchain-core: 为关键抽象定义的基础接口以及组合这些接口的逻辑。
  • langchain-community: 各种第三方组件的集成。
  • langchain: 构成你应用程序认知架构的链、代理和检索逻辑。
  • langchain-experimental: 包含实验性的组件和链。

老铁们需要各自为这些包配置开发环境。对于快速上手,咱们从langchain-community开始:

cd libs/community

本地开发依赖

要安装langchain-community的开发要求(例如运行langchain、例子、格式化、测试和覆盖率检查):

poetry install --with lint,typing,test,test_integration

然后验证依赖的安装:

make test

如果安装过程中遇到WheelFileValidationError for debugpy,确保你运行的是Poetry v1.6.1+。如果你还碰到这个问题,可以尝试禁用“现代安装”模式(poetry config installer.modern-installation false),然后重新安装依赖。

测试

langchainlangchain-communitylangchain-experimental中,一些测试依赖是可选的。单元测试覆盖不需要外部API调用的模块化逻辑。如果你添加了新的逻辑,别忘了加个单元测试。

运行单元测试:

make test

在Docker中运行单元测试:

make docker_tests

还可以进行集成测试和代码覆盖率测试。

格式化与Linting

在提交PR之前,本地运行格式化和Linting;CI系统也会检查的。代码格式化通过ruff完成。

运行格式化:

make format

Linting则结合了ruffmypy进行:

make lint

如果觉得Linting麻烦,可以联系项目维护者,他们可以帮到你。

拼写检查

通过codespell进行拼写检查,若想修正拼写:

make spell_fix

如果某个词被误报,你可以在pyproject.toml文件的代码拼写配置中忽略它。

关于可选依赖

langchainlangchain-communitylangchain-experimental依赖于可选依赖,以保持轻量。添加新的依赖时,假设它是可选的。

添加Jupyter Notebook

如果你要添加Jupyter Notebook示例,安装开发依赖:

poetry install --with dev

启动notebook:

poetry run jupyter notebook

运行poetry install后,langchain包会以可编辑模式安装在virtualenv中,方便你在notebook中引入新逻辑。

今天的技术分享就到这里,希望对大家有帮助。开发过程中遇到问题也可以在评论区交流~

—END—

### 如何在本地环境中设置和运行 DeepSeek 和 LangChain 的集成 #### 环境准备 为了成功实现 DeepSeek 和 LangChain本地集成,首先需要完成必要的环境配置。这包括安装 Ollama 工具以及确保 Python 开发环境可用。 Ollama 是一种轻量级工具,用于管理和运行大型语言模型 (LLM),支持多种模型架构,其中包括 DeepSeek 提供的系列模型 [^1]。因此,在开始之前,请按照官方指南下载并安装 Ollama: ```bash curl https://ollama.ai/install.sh | sh ``` 此命令会自动检测操作系统并安装适合版本的 Ollama 软件包 [^2]。 #### 下载 DeepSeek 模型 通过 Ollama 获取所需的 DeepSeek 模型实例(例如 `deepseek-r1`),可以执行如下命令来拉取模型到本地缓存目录中: ```bash ollama pull deepseek/r1 ``` 这条指令将从远程仓库获取指定名称下的预训练权重文件,并存储至默认路径下以便后续调用 。 #### 配置 LangChain 连接器 LangChain 是一个灵活框架,允许开发者轻松连接各种 LLMs 及其应用场景。要让 LangChain 使用刚刚加载好的 DeepSeek 模型作为推理引擎,则需定义相应的适配逻辑。 以下是基于 Python 编写的简单示例脚本,展示如何初始化链路并与自托管模型交互: ```python from langchain.llms import Ollama # 初始化OLLAMA接口对象 llm = Ollama(model="deepseek", temperature=0.7) # 测试对话功能 response = llm.invoke("你好!今天过得怎么样?") print(response) ``` 上述代码片段创建了一个指向特定型号 (`deepseek`) 的句柄变量 `llm` ,并通过调整参数如温度值控制输出风格多样性 [^3]。 #### 构建简易RAG应用案例 假设我们希望进一步扩展基础聊天能力,加入检索增强生成(Retrieval-Augmented Generation, RAG)特性,则可引入矢量数据库组件辅助处理复杂查询请求。下面给出一段综合演示代码: ```python from langchain.vectorstores import Chroma from langchain.embeddings.openai import OpenAIEmbeddings from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.chains import RetrievalQAWithSourcesChain import chromadb embedding_function = OpenAIEmbeddings() persist_directory = './chroma_db' client_settings = { 'chroma_db_impl': 'duckdb+parquet', 'persist_directory': persist_directory, } vectordb = Chroma( embedding_function=embedding_function, client_settings=client_settings, collection_name="my_collection" ) text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=0) texts = ["这是一个测试文档的内容...", "...更多段落继续补充"] docs = text_splitter.create_documents(texts=texts) vectordb.add_texts([doc.page_content for doc in docs]) qa_chain = RetrievalQAWithSourcesChain.from_llm(llm=llm, retriever=vectordb.as_retriever()) query = "请总结一下刚才上传资料的主要观点是什么?" result = qa_chain(query) print(result['answer']) print("\n参考资料:\n" + "\n".join(["- "+source for source in result['sources']])) ``` 这里利用了Chroma向量库保存嵌入表示形式的数据集条目;同时借助OpenAI Embedding服务计算相似度得分矩阵从而定位最匹配候选答案区间范围内的原始素材出处链接列表返回给最终用户查看参考依据所在位置信息 [^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值