如何用 Ollama Modelfile 创建 110K 上下文的自定义模型供 PentAGI 使用?
【免费下载链接】pentagiFully autonomous AI Agents system capable of performing complex penetration testing tasks项目地址: https://gitcode.com/GitHub_Trending/pe/pentagi
PentAGI 的 agent 工作流对上下文窗口的要求高于 Ollama 的默认配置:典型 agent 流程大约消耗 64K tokens,而 PentAGI 出于安全余量和复杂渗透测试场景的考虑,使用 110K 的上下文规模。由于num_ctx参数只能在模型创建时通过 Modelfile 设置,创建之后无法修改、运行时也无法覆盖,所以要用本地 Ollama 模型驱动 PentAGI,必须先用 Modelfile 构建一个带num_ctx 110000的自定义模型,再把 PentAGI 指向引用该模型的 provider 配置文件。
前提条件
按 Ollama Provider 文档 的要求准备本地环境:
- 按 Ollama 官方安装指南安装并启动 Ollama server,默认监听
http://localhost:11434; - 确认基础模型已可用,或先执行
ollama pull qwen3:32b-fp16拉取本文示例使用的基础模型。
编写 Modelfile 并构建自定义模型
以文档给出的 Qwen3 32B FP16 示例为例,创建名为Modelfile_qwen3_32b_fp16_tc的 Modelfile,内容为:
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其中FROM指向 Ollama 中已存在的基础模型,num_ctx 110000即 110K 上下文,其余PARAMETER行为文档给出的采样参数原值。然后执行构建:
ollama create qwen3:32b-fp16-tc -f Modelfile_qwen3_32b_fp16_tc构建成功后得到标签为qwen3:32b-fp16-tc的自定义模型。可以用 Ollama 文档提到的ollama list查看系统上当前可用的模型,确认新模型出现在列表中。
将 PentAGI 指向自定义模型
PentAGI 的 Docker 镜像内置了引用这些自定义模型的 provider 配置文件,位于容器内/opt/pentagi/conf/:
ollama-qwen332b-fp16-tc.provider.yml(对应 示例配置)ollama-qwq32b-fp16-tc.provider.yml(对应 示例配置)
以 Qwen3 配置为例,该文件把所有 agent 类型(simple、simple_json、primary_agent、assistant、generator、refiner、adviser、reflector、searcher、enricher、coder、installer、pentester)统一指定为qwen3:32b-fp16-tc,n: 1、max_tokens: 40000。因此只需在.env中配置 Ollama 连接与配置路径:
# Basic local Ollama setup OLLAMA_SERVER_URL=http://localhost:11434 OLLAMA_SERVER_MODEL=qwen3:32b-fp16-tc # Production setup with auto-pull and model discovery OLLAMA_SERVER_URL=http://ollama-server:11434 OLLAMA_SERVER_PULL_MODELS_ENABLED=true OLLAMA_SERVER_PULL_MODELS_TIMEOUT=900 OLLAMA_SERVER_LOAD_MODELS_ENABLED=true # Using pre-built configurations from Docker image OLLAMA_SERVER_CONFIG_PATH=/opt/pentagi/conf/ollama-qwen332b-fp16-tc.provider.yml几点适用条件说明:
- 容器访问宿主机上的 Ollama 时,
OLLAMA_SERVER_URL需要改成容器可达的地址,文档示例中使用的是http://ollama-server:11434; OLLAMA_SERVER_PULL_MODELS_ENABLED=true会在启动时自动下载配置中指定的模型,首次启动可能耗时数分钟,OLLAMA_SERVER_PULL_MODELS_TIMEOUT=900将下载超时设为 15 分钟;OLLAMA_SERVER_LOAD_MODELS_ENABLED=true会通过 API 查询 Ollama 模型列表,额外增加 1-2 秒启动延迟;追求最快启动时,两个开关都关闭并静态指定模型即可(见 Ollama Provider 文档 的 Recommended Settings)。
用 ctester 验证配置
PentAGI 内置ctester工具用于测试和校验 LLM agent 配置是否可用。在运行中的 PentAGI 容器内针对该 Ollama 配置执行:
# Test with Ollama Qwen3 32B configuration (requires custom model creation) docker exec -it pentagi /opt/pentagi/bin/ctester -config /opt/pentagi/conf/ollama-qwen332b-fp16-tc.provider.ymlctester 会对 basic completion、JSON 响应、function calling 和渗透测试知识等测试项进行并行测试,并生成带成功率与性能指标的 markdown 报告;也可以只测部分 agent 类型,例如-agents simple,primary_agent,coder,或用-verbose输出详细过程。
可选分支:QwQ 32B FP16
文档给出了第二个示例,ModelfileModelfile_qwq_32b_fp16_tc:
FROM qwq:32b-fp16 PARAMETER num_ctx 110000 PARAMETER temperature 0.2 PARAMETER top_p 0.7 PARAMETER min_p 0.0 PARAMETER top_k 40 PARAMETER repeat_penalty 1.2ollama create qwq:32b-fp16-tc -f Modelfile_qwq_32b_fp16_tc注意文档明确标注:QwQ 32B FP16 推理大约需要71.3 GB VRAM,尝试使用该模型前必须先确认 GPU 显存足够。对应的验证命令为:
# Test with Ollama QwQ 32B configuration (requires custom model creation and 71.3GB VRAM) docker exec -it pentagi /opt/pentagi/bin/ctester -config /opt/pentagi/conf/ollama-qwq32b-fp16-tc.provider.yml其 provider 配置(ollama-qwq32b-fp16-tc.provider.yml)同样覆盖全部 agent 类型,另外在simple与simple_json中设置了repetition_penalty: 1。
排查与限制
- 连接失败:确认 Ollama server 正在运行且
OLLAMA_SERVER_URL从 PentAGI 侧可达(Ollama Provider 文档 Troubleshooting 第 1 条); - Model not found:先执行
ollama pull <model-name>拉取模型(同上文档 Troubleshooting 第 2 条); - num_ctx 不可事后调整:若需要不同的上下文规模,只能新建 Modelfile 并重新
ollama create一个模型,已创建模型无法在运行时覆盖num_ctx; - 显存不足:大模型下用系统资源监控观察内存占用(Troubleshooting 第 4 条),QwQ 32B FP16 的 71.3 GB VRAM 要求是最直接的硬约束。
【免费下载链接】pentagiFully autonomous AI Agents system capable of performing complex penetration testing tasks项目地址: https://gitcode.com/GitHub_Trending/pe/pentagi
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考