LLM in a box 模板
此模板提供了一个易于部署、可自托管的堆栈,使生成式AI生态系统更易于研究和教育使用。它通过灵活的聊天UI和单一API端点统一了对商业和本地模型(通过Ollama)的访问,实现了私有、可复现和自主的AI工作流。
此模板项目包含:
- 灵活的聊天UI OpenWebUI
- 通过docling进行文档提取以优化RAG
- 模型路由器 litellm
- 模型服务器 ollama
- 状态存储在PostgreSQL中
此模板使用cruft构建,便于更新。此外,使用sops和age管理密钥。我们使用traefik作为反向代理。
发布
此项目是Complexity Science Hub的贡献,根据Apache License 2.0发布。此模板项目发布在JOSE(开源教育期刊)上。DOI请参见:<> 出版物的源代码可在docs/paper.md文件中找到。
使用模板
我们打算最终搭建更多部署流程。但这通常对特定组织相当具体。因此,我们从docker compose开始。可能稍后会添加一些用于Kubernetes与fluxcd的内容。您可能希望自定义生产级部署以处理SSL和SSO。但我们希望这能给您一个好的起点。请参阅QUICKSTART.md获取深入的快速入门指南。
先决条件
您需要安装可用的pixi。请参见https://pixi.sh/latest/ 安装。简而言之:
- osx/linux:
curl -fsSL https://pixi.sh/install.sh | sh - windows:
powershell -ExecutionPolicy ByPass -c "irm -useb https://pixi.sh/install.ps1 | iex"
此外,您必须安装某种容器运行时。例如:
- Docker Desktop https://www.docker.com/products/docker-desktop/
- Rancher Desktop https://rancherdesktop.io/
- Kubernetes
- Podman
- …
应用模板
Docker(简单)
目前我们假设您使用docker。
注意:Pixi将引导大多数所需工具,即git
|
|
确保您已检出vllm(之后):
|
|
现在在.env文件中设置您的密钥。参见下面的模板。
|
|
最后,启动服务
|
|
最后在浏览器中导航到:
连接到模型服务器(通过docker的ollama)
从https://ollama.com 选择合适的模型
拉取它 docker exec -it ollama ollama pull gemma3:4b
验证它在这里 docker exec -it ollama ollama ls
设置模型路由器,可在 http://llm.llminabox.geoheil.com/ui 使用
使用上面.env文件中设置的凭据登录 注册模型:确保
- model_name: “gemma3:4b” litellm_params: model: “ollama_chat/gemma3:4b” api_base: “http://ollama:11434”
可能修改其他模型注册
确保您有所需模型的所有API密钥 Openai Claoude Gemini VertexAI:确保设置正确的Google云项目
停止并重新启动模型路由器 转到 http://llm.llminabox.geoheil.com/ui 在UI中验证模型被检测到 创建新的API密钥(我们稍后将在聊天UI中使用)
name: llminabox 选择所需的模型(即现在全部) 可能添加一些限制,如预算、速率限制、过期等。
验证所需模型在llm playground中工作 http://llm.llminabox.geoheil.com/ui/?page=llm-playground
现在让最终用户可用。我们使用Openwebui作为聊天UI:http://chat.llminabox.geoheil.com
创建用户(使用更合理的凭据)
admin admin@example.com test
默认未设置邮件传递 - 您必须根据自己组织的需求进行设置。 在管理设置中 确保正确定义了模型连接 - 参见 http://chat.llminabox.geoheil.com/admin/settings/connections 在openai兼容下 - 创建新连接
connection URL: http://llmrouter:4000/v1 api key: 上面创建的密钥 确保默认的openai API被禁用 - 所有流量都通过模型路由器
Litelm模型路由器:llm.llminabox.geoheil.com
Kubernetes(高级)
这是一个更高级的设置。我们使用fluxcd和k3s。详情请参见高级设置。
TODO:这是一个进行中的工作。将来会更新。目前,只有基于docker-compose的设置可用。
贡献
欢迎贡献 - 问题甚至更好的拉取请求都受欢迎。
开发模板
要渲染项目实例:
|
|
参见rendered-template/* 了解项目可能的外观示例。
|
|