Skip to main content

SiteLLM= LiteLLM + Chinese + Security

Project description

SiteLLM = LiteLLM + 中文生态 + 安全

SiteLLM 开源Token运营中枢,集安全基座(Security)、智能运营(Intelligence)、全链路追溯(Trace)与生态协同(Ecosystem)四大能力;上承大模型,下启智能体,让你每一个Token都能发光发热。

架构图

架构图

UI

Web UI

LiteLLM

  • LiteLLM 是一个开源的 AI 网关(AI Gateway)。它提供了一个统一且标准化的接口,让你能够轻松调用超过 100 种大语言模型(LLM)提供商的服务——包括 OpenAI、Anthropic、Gemini、Bedrock、Azure 等等——并且全程都可以直接沿用大家最熟悉的 OpenAI 接口格式。
  • 简单来说,它就是一个强大的 OpenAI 代理服务器(也就是 LLM 网关)。除了能帮你统一对接各种模型外,它还能帮你追踪各项 API 的开销(track spend),甚至可以为每一个虚拟密钥(virtual key)或用户单独设置预算限额,非常适合需要集中管理 AI 资源的企业或开发者。

中文生态

中文界面:更亲切直观

SiteLLM 提供完整的中文界面支持,降低使用门槛,尤其适合企业内部推广和快速上手。

SiteLLM 原生支持国内主流大模型,开箱即用:

  • 阿里通义千问(Qwen 系列)
  • 百度文心一言(ERNIE Bot)
  • 智谱清言(GLM 系列)
  • 月之暗面 Kimi(Moonshot)
  • 科大讯飞星火(Spark)
  • Llama.cpp (本地) 以及更多通过 OpenAI 兼容接口接入的国内模型 无需翻墙、无需代理,直接在国内网络环境下调用,延迟低、稳定性好。

中文安全护栏:适配国内场景

原有内置护栏基于英文环境设计,在国内对话场景中实用性有限。升级后,内置护栏全面支持中文内容检测,包括:

  • 中文敏感词过滤
  • 中文 Prompt 注入检测
  • 中文合规内容识别

组织管理:一键接入国内协作平台

后续规划与主流国内协作平台深度集成:

  • 飞书:一键同步组织架构、用户身份
  • 钉钉:SSO 单点登录、部门权限映射
  • 企业微信:通讯录同步、审批流程对接

安全

专业红队+AI代码审计

版本发布经过AI和红队的双重审计才发布,尽可能减少安全风险

安全护栏:

SiteLLM 的安全护栏体系继承LiteLLM,支持三种类型的护栏,覆盖从本地规则到外部 API 的完整能力,满足企业级 AI 应用的安全合规需求。

1. 内容过滤护栏(规则型)

  • 实现方式:基于内置规则引擎进行本地内容过滤
  • 特点
    • 无需外部依赖,本地即可运行
    • 低延迟,实时拦截
    • 支持关键词、正则表达式、敏感词库等规则配置
    • 全面支持中文检测:内置中文敏感词库、中文 Prompt 注入检测规则,适配国内对话场景
  • 适用场景:输入/输出内容的实时过滤,如敏感词、违规内容、Prompt 注入检测

2. 第三方合作伙伴护栏(API 型)

  • 实现方式:调用第三方合作伙伴提供的安全检测 API 接口
  • 特点
    • 借助成熟的安全服务提供商能力
    • 无需自行维护规则库和模型
    • 可按需选择不同供应商(如内容安全、合规检测等)
    • 深度集成国内安全服务商:支持云智信安等国内护栏 API,提供中文内容安全检测、合规判断等专业能力
  • 适用场景:需要专业级内容审核、合规判断的场景

3. 自研 API 护栏(API 型)

  • 实现方式:通过调用自主开发的 API 接口进行安全检测
  • 特点
    • 完全自主可控,可根据业务深度定制
    • 支持私有模型、自定义规则、内部知识库
    • 与内部系统无缝集成
  • 适用场景:有定制化安全需求、数据不出域要求的企业场景

关于策略:灵活绑定,层层防护

使用策略来分组护栏并控制哪些策略适用于特定团队、密钥或模型。

为什么使用策略?

为团队、密钥或模型启用/禁用特定护栏,将护栏组合到单个策略中,继承现有策略并覆盖所需内容

关于策略应用

策略应用控制您的策略在何处应用。策略在应用到特定团队、密钥、模型、标签或全局之前不会产生任何作用。

应用范围:

  • 全局 (*) - 应用于所有请求
  • 团队 - 仅适用于特定团队
  • 密钥 - 仅适用于特定API密钥(支持通配符如dev-*)
  • 模型 - 仅在使用特定模型时适用
  • 标签 - 匹配来自密钥/团队 metadata.tags 或在请求体中动态传递的标签(metadata.tags)。使用此功能可在跨组强制执行策略,例如"标记为healthcare的所有密钥获得HIPAA护栏。"支持通配符(prod-*)。

安装部署

一、安装 SiteLLM

环境要求

  • Python >= 3.9(推荐使用 3.10+)
  • 操作系统:Linux(本文以 Ubuntu 为例)

安装命令

pip install sitellm

就这么简单。SiteLLM 的 Python 包管理非常规范,依赖会自动安装。

验证安装

sitellm --version

如果能正常输出版本号,说明安装成功。


二、安装 PostgreSQL 数据库

SiteLLM 支持多种数据库,但生产环境推荐使用 PostgreSQL,因为它在事务处理、并发性能和数据一致性方面表现优秀。

1. 安装 PostgreSQL

在 Ubuntu 22.04 上,默认提供的是 PostgreSQL 16 版本:

sudo apt install -y postgresql

安装完成后,服务会自动启动。你可以用以下命令检查状态:

sudo systemctl status postgresql

2. 创建数据库和用户

切换到 postgres 用户,进入数据库命令行:

sudo -u postgres psql

然后执行以下 SQL 语句:

-- 创建数据库(指定 UTF8 编码,确保中文支持)
CREATE DATABASE litellm WITH ENCODING = 'UTF8';

-- 创建用户并设置密码,换成自己的密码
CREATE USER sitellm WITH PASSWORD 'sitellm_ai2000';

-- 授予连接权限
GRANT CONNECT ON DATABASE litellm TO sitellm;

-- 切换到 litellm 数据库
\c litellm

-- 授予 public schema 的使用权
GRANT USAGE ON SCHEMA public TO sitellm;

-- 允许用户在 public schema 下创建对象
GRANT CREATE ON SCHEMA public TO sitellm;

-- 授予所有表的增删改查权限
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO sitellm;

完成后输入 \q 退出。

注意事项

  • 密码 sitellm_ai2000 是示例,生产环境请使用强密码
  • GRANT ON ALL TABLES 只对当前已存在的表生效,后续新建的表需要重新授权或设置默认权限

三、Prisma 代码生成(关键步骤)

这一步很容易被忽略,但非常关键。SiteLLM 使用 Prisma 作为 ORM 框架,需要在启动前生成数据库访问代码。

执行命令

# 方式一:指定 schema 文件路径
prisma generate --schema /usr/local/lib/python3.10/site-packages/sitellm/proxy/schema.prisma

# 方式二:动态获取 Python 包路径(推荐)
prisma generate --schema $(python3 -m site --user-site)/sitellm/proxy/schema.prisma

路径说明

  • 如果你使用 pip install 全局安装,路径通常在 /usr/local/lib/python3.x/site-packages/sitellm/proxy/schema.prisma
  • 如果你使用 pip install --user 安装,路径在用户目录下

可以用以下命令确认实际路径:

python3 -c "import sitellm; print(sitellm.__path__)"

四、配置文件(config.yaml)

SiteLLM 通过 YAML 配置文件管理所有设置。创建一个 config.yaml 文件:

general_settings:
  master_key: "your_admin_password_here"
  database_url: "postgresql://sitellm:sitellm_ai2000@127.0.0.1:5432/litellm"
  store_model_in_db: true
  store_prompts_in_spend_logs: true

litellm_settings:
  drop_params: true

配置项说明

配置项 说明
master_key Web 登录时 admin 的密码,同时也是主密钥用于加密数据库中的敏感信息
database_url PostgreSQL 连接字符串,格式:postgresql://用户:密码@主机:端口/数据库
store_model_in_db 是否在数据库中存储模型信息,建议开启
store_prompts_in_spend_logs 是否在消费日志中存储 Prompt 内容,便于审计和调试
drop_params 是否丢弃未识别的参数,避免上游模型报错

⚠️ 重要提醒

master_key 一旦设置,启动后不可修改。

这个密码不仅用于 Web 登录,还将作为主密钥来加密数据库中的其他敏感信息(如 API 密钥、凭证等)。如果后续修改了这个密码,之前加密的数据将无法解密。

因此:

  1. 使用强密码(建议 16 位以上,包含大小写字母、数字、特殊字符)
  2. 妥善保存,不要丢失
  3. 不要在代码仓库中明文存储

五、启动 SiteLLM

环境变量配置

# 设置日志在数据库中存储的最大长度(默认可能较短,建议调大)
export MAX_STRING_LENGTH_PROMPT_IN_DB=32000

启动命令

# 默认端口 4000
sitellm -c config.yaml

# 自定义端口
sitellm -c config.yaml --port 8080

验证启动

启动成功后,访问 http://localhost:4000(或你设置的端口),使用 admin 账号和 master_key 中的密码登录。


服务与支持

  1. 可以通过gitee来给我们提建议和issue, 也欢迎fork仓库提交代码。 https://gitee.com/zhds/sitellm
  2. 邮箱联系:maple5218@163.com
  3. 微信群:
微信群

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sitellm-0.4.0-py3-none-any.whl (16.5 MB view details)

Uploaded Python 3

File details

Details for the file sitellm-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: sitellm-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 16.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for sitellm-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 35e070874dde80a0f5caeb4a8cf8233b1508d7193c85d5f338fa1d4b52b8ad55
MD5 ab8529f3717489b37e7d93507a810a40
BLAKE2b-256 29188c83cae74f6bdce522c16aaec7d9bca12d6db8d7a8223e10f75d5c90d685

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page