langchain使用本地模型
时间: 2025-06-01 14:06:17 浏览: 44
### 如何在LangChain中使用本地模型
LangChain 提供了多种方式来加载和使用本地模型,包括通过自定义封装、调用 API 或直接集成支持的模型框架。以下是详细的教程和示例代码。
#### 1. 使用自定义封装本地模型
如果本地模型不被 LangChain 直接支持,则可以通过继承 `langchain.llms.base.LLM` 类来自定义模型接口[^3]。以下是一个示例代码:
```python
from langchain.llms.base import LLM
from typing import Any, List, Mapping, Optional
from langchain.callbacks.manager import CallbackManagerForLLMRun
class CustomLocalModel(LLM):
model_path: str # 模型路径
@property
def _llm_type(self) -> str:
return "custom_local_model"
def _call(
self,
prompt: str,
stop: Optional[List[str]] = None,
run_manager: Optional[CallbackManagerForLLMRun] = None,
) -> str:
if stop is not None:
raise ValueError("stop kwargs are not permitted.")
# 在此处实现与本地模型交互的逻辑
# 示例:假设我们有一个函数 `run_local_model` 来运行本地模型
result = run_local_model(prompt, self.model_path)
return result
@property
def _identifying_params(self) -> Mapping[str, Any]:
"""获取模型的标识参数"""
return {"model_path": self.model_path}
```
在此代码中,`CustomLocalModel` 是一个自定义类,用于封装本地模型的交互逻辑。需要根据实际的模型实现 `run_local_model` 函数[^3]。
#### 2. 使用 Ollama 启动本地模型并进行交互
Ollama 是一个轻量级工具,可以方便地启动和管理本地大模型。通过命令行启动模型后,可以直接与模型进行对话[^1]。以下是一个简单的流程:
1. **启动本地模型**:
```bash
ollama run deepseek_r1_15b:latest
```
2. **通过 LangChain 连接 Ollama**:
LangChain 支持通过 HTTP API 与 Ollama 集成。以下是一个示例代码:
```python
from langchain.llms import Ollama
llm = Ollama(model="deepseek_r1_15b")
response = llm("请回答这个问题:什么是量子计算?")
print(response)
```
此方法利用了 LangChain 的内置支持,简化了与 Ollama 的交互过程。
#### 3. 使用嵌入模型(如 GPT4All)
LangChain 还支持本地嵌入模型,例如 GPT4All。以下是如何使用 GPT4All 嵌入模型的示例代码[^4]:
```python
from langchain_community.embeddings import GPT4AllEmbeddings
# 初始化 GPT4All 嵌入模型
gpt4all_embd = GPT4AllEmbeddings()
# 嵌入单个查询文本
query_result = gpt4all_embd.embed_query("这是一个测试查询。")
# 嵌入多个文档文本
doc_result = gpt4all_embd.embed_documents(["这是第一个文档。", "这是第二个文档。"])
print(query_result)
print(doc_result)
```
此代码展示了如何将文本数据嵌入为向量表示,适用于后续的检索或相似性计算任务[^4]。
#### 4. 总结
通过 LangChain,可以灵活地使用本地模型,无论是通过自定义封装、调用外部服务还是直接集成支持的框架。具体选择取决于模型的类型和使用场景。
阅读全文
相关推荐


















