如何把ollama接入到langchain0.3
时间: 2025-07-15 16:56:36 浏览: 2
### 将 Ollama 集成到 LangChain 0.3 版本中的指南
为了将 Ollama 成功集成到 LangChain 的 0.3 版本中,以下是详细的说明和实现方法:
#### 安装依赖项
首先,确保安装了必要的 Python 库以及 Ollama CLI 工具。可以通过运行以下命令来完成这些操作:
```bash
pip install langchain==0.3.* requests
```
此外,还需要下载并设置好 Ollama CLI 工具[^1]。
#### 创建自定义模型类
由于 LangChain 默认不支持 Ollama API,在此情况下可以创建一个继承 `langchain.llms.base.LLM` 类的自定义 LLM 实现。下面是一个完整的代码示例:
```python
from typing import Any, Dict, List, Mapping, Optional
import requests
from pydantic import BaseModel, Extra, Field, root_validator
from langchain.llms.base import LLM
from langchain.utils import get_from_dict_or_env
class Ollama(LLM, BaseModel):
"""Ollama LLM wrapper."""
n_ctx: int = Field(ge=1, alias="nCtx")
model_name: str = "llama2"
server_url: str = ""
temperature: float = 0.75
top_k: int = 40
top_p: float = 0.95
repeat_penalty: float = 1.18
streaming: bool = False
class Config:
extra = Extra.forbid
@root_validator(pre=True)
def build_extra(cls, values: Dict[str, Any]) -> Dict[str, Any]:
all_required_field_names = {"model_name", "server_url"}
if not set(values.keys()).intersection(all_required_field_names):
raise ValueError(f"You need to pass one of {all_required_field_names}.")
return values
@property
def _default_params(self) -> Dict[str, Any]:
"""Get the default parameters for calling OpenAI API."""
normal_params = {
"temperature": self.temperature,
"top_k": self.top_k,
"top_p": self.top_p,
"repeat_penalty": self.repeat_penalty,
}
return {**normal_params}
@property
def _identifying_params(self) -> Mapping[str, Any]:
"""Get the identifying parameters."""
return {**{"model_name": self.model_name}, **self._default_params}
@property
def _llm_type(self) -> str:
"""Return type of llm."""
return "ollama"
def _call(self, prompt: str, stop: Optional[List[str]] = None) -> str:
params = self._default_params
if stop is not None:
params["stop"] = stop
response = requests.post(
f"{self.server_url}/api/generate",
json={"prompt": prompt, "model": self.model_name, **params},
)
result = response.json()
text = result.get("response", "")
return text.strip()
async def _acall(self, *args: Any, **kwargs: Any) -> Any:
raise NotImplementedError("Async calls are currently unsupported.")
```
这段代码实现了对 Ollama RESTful 接口的支持,并允许通过指定参数调用不同的模型配置[^2]。
#### 使用自定义模型实例化链路
一旦完成了上面提到的自定义模型构建工作,则可以在实际项目里轻松使用它作为任何其他标准大语言模型 (LLMs):
```python
from langchain.chains import ConversationChain
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory()
ollama_model = Ollama(model_name='llama2', server_url='http://localhost:11434')
conversation_chain = ConversationChain(llm=ollama_model, memory=memory)
print(conversation_chain.predict(input="Tell me a joke about coding"))
```
以上脚本展示了如何利用刚刚开发出来的适配器加载特定版本的语言处理工具包并与之交互[^3]。
---
阅读全文
相关推荐
















