# 本地模型

> 在由您自有硬件提供的模型上运行 PentAGI，确保 prompt、tool 输出和 finding 均保留在您的服务器上。

PentAGI 可以完全在您自行托管的模型上运行。此时，[agent](https://pentagi.com/zh-cn/docs/glossary/#agent) 的提示词、它们读取的 [tool](https://pentagi.com/zh-cn/docs/glossary/#tool) 输出以及它们报告的 [finding](https://pentagi.com/zh-cn/docs/glossary/#finding) 都会保留在您的服务器上，而一个长 [flow](https://pentagi.com/zh-cn/docs/glossary/#flow) 消耗的是 GPU 时间而非 token。支持两类 model server：Ollama（设置最快）以及 vLLM 或任何其他具有 OpenAI 兼容 API 的 server（吞吐量更高）。

## [Ollama](https://pentagi.com/zh-cn/docs/deployment/local-models/#ollama)

在 `.env` 中将 PentAGI 指向 Ollama server：

```bash
OLLAMA_SERVER_URL=http://ollama-server:11434
OLLAMA_SERVER_CONFIG_PATH=/opt/pentagi/conf/ollama-qwen332b-fp16-tc.provider.yml
OLLAMA_SERVER_PULL_MODELS_ENABLED=false   # true downloads missing models at startup
OLLAMA_SERVER_LOAD_MODELS_ENABLED=false   # true lists the models the server already has
```

配置文件为每个 [agent type](https://pentagi.com/zh-cn/docs/glossary/#agent-type) 分配一个模型及其参数；如果没有配置文件，`OLLAMA_SERVER_MODEL` 会设置默认模型。镜像在 `/opt/pentagi/conf/` 中提供了现成的配置，其中包括 `ollama-qwen332b-fp16-tc.provider.yml` 和 `ollama-qwq32b-fp16-tc.provider.yml`。

Ollama 的默认上下文窗口远小于 flow 所需的大小：agent 通常使用约 64K token，而 PentAGI 设置为 110K。Ollama 仅在创建模型时设置上下文大小，因此请从 Modelfile 构建变体：

```dockerfile
FROM qwen3:32b-fp16
PARAMETER num_ctx 110000
PARAMETER temperature 0.3
PARAMETER top_p 0.8
PARAMETER min_p 0.0
PARAMETER top_k 20
PARAMETER repeat_penalty 1.1
```

```bash
ollama create qwen3:32b-fp16-tc -f Modelfile
```

## [vLLM 和其他 OpenAI 兼容的 server](https://pentagi.com/zh-cn/docs/deployment/local-models/#vllm-and-other-openai-compatible-servers)

vLLM、LocalAI 以及其他具有 OpenAI 兼容 API 的 server 作为 [custom provider](https://pentagi.com/zh-cn/docs/configuration/llm-providers/#custom-and-openai-compatible-endpoints) 连接：

```bash
LLM_SERVER_URL=http://vllm-server:8000/v1
LLM_SERVER_KEY=local                      # any non-empty value when the server has no key
LLM_SERVER_MODEL=Qwen/Qwen3.6-27B-FP8
LLM_SERVER_CONFIG_PATH=/opt/pentagi/conf/vllm-qwen3.6-27b-fp8.provider.yml
```

镜像提供了 vLLM 上多个 Qwen 版本的配置；`-no-think` 变体会关闭 reasoning。agent 通过 [tool call](https://pentagi.com/zh-cn/docs/glossary/#tool-call) 工作，因此请使用为您的模型推荐的 tool-call parser 和 chat [template](https://pentagi.com/zh-cn/docs/glossary/#template) 启动 server：如果 parser 错误，tool call 参数会损坏，导致 flow 在几步后停止。

## [选择模型](https://pentagi.com/zh-cn/docs/deployment/local-models/#choosing-a-model)

* 在配置文件中，将您最强的模型分配给 `primary_agent`、`pentester` 和 `adviser`；较轻的模型可以用于 `searcher`、`enricher` 和摘要。
* 对于参数量低于 32B 的模型，请启用 [execution monitoring and task planning](https://pentagi.com/zh-cn/docs/concepts/agents/#safeguards)。这会使结果质量大致翻倍，但代价是 token 和时间增加两到三倍。
* 规划内存：例如，FP16 格式的 QwQ 32B 需要约 71 GB 的 GPU 内存。

## [保持其余栈本地化](https://pentagi.com/zh-cn/docs/deployment/local-models/#keep-the-rest-of-the-stack-local)

| 部分                                                 | 设置                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| -------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Embeddings                                         | `EMBEDDING_PROVIDER=ollama` 配合 `EMBEDDING_MODEL` 中的 embedding model 使用相同的 Ollama server；本地 OpenAI 兼容 server 可与 `EMBEDDING_PROVIDER=openai` 配合使用，其地址在 `EMBEDDING_URL` 中，且 `EMBEDDING_KEY` 为非空值                                                                                                                                                                                                                                                                |
| Web search                                         | Search 会将 agent 的查询发送到互联网。默认启用 DuckDuckGo；使用 `DUCKDUCKGO_ENABLED=false` 将其关闭，并仅保留您接受的 [engines](https://pentagi.com/zh-cn/docs/configuration/search-engines/)，例如您自己的 SearXNG                                                                                                                                                                                                                                                                                                          |
| [Knowledge graph](https://pentagi.com/zh-cn/docs/glossary/#knowledge-graph) | 默认关闭。启用时，除非 `GRAPHITI_LLM_CLIENT_TYPE=custom` 将其发送到 `LLM_SERVER_URL` 中的 server（随后也会使用 `EMBEDDING_MODEL` 中命名的 model，若该值为空则使用 `text-embedding-3-small`，向该 server 请求 embeddings），否则 Graphiti 会调用 OpenAI。如果该 server 不提供该 model，请设置 `GRAPHITI_SEPARATE_EMBEDDING=true`：Graphiti 将采用 PentAGI 所用的值 `EMBEDDING_URL`、`EMBEDDING_KEY` 和 `EMBEDDING_MODEL`，且这些值必须指向一个 OpenAI-compatible server — 请参阅 [Knowledge graph](https://pentagi.com/zh-cn/docs/concepts/memory/#knowledge-graph-optional) |
| Observability                                      | 捆绑的 Langfuse 和 Grafana 栈在您的主机上运行 — 请参阅 [Observability](https://pentagi.com/zh-cn/docs/configuration/observability/)                                                                                                                                                                                                                                                                                                                                                                   |
| Update check                                       | `UPDATE_CHECK_INTERVAL=0` 可将其关闭；[Security](https://pentagi.com/zh-cn/docs/configuration/security/#update-check) 列出了它发送的内容                                                                                                                                                                                                                                                                                                                                                             |
| Images                                             | Docker 会使用其自身设置从 Docker Hub 拉取 [sandbox](https://pentagi.com/zh-cn/docs/glossary/#sandbox) 镜像；在封闭网络中，请将 Docker daemon 指向 registry mirror                                                                                                                                                                                                                                                                                                                                              |