使用 litellm_team 数据源:在 Terraform 中查询并复用 LiteLLM 团队配置

发布时间:2026/9/10 5:11:29

使用 litellm_team 数据源:在 Terraform 中查询并复用 LiteLLM 团队配置 使用 litellm_team 数据源在 Terraform 中查询并复用 LiteLLM 团队配置【免费下载链接】litellmThe fastest, litest AI Gateway. Rust core with Python SDK. Call 100 LLM APIs in OpenAI (or native) format with cost tracking, guardrails, load balancing, and logging [Bedrock, Azure, OpenAI, Anthropic, OpenAI, VertexAI, vLLM, Nvidia NIM]项目地址: https://gitcode.com/GitHub_Trending/li/litellm本文面向使用terraform-provider-litellm管理 LiteLLM Proxy 的开发者讲解如何通过litellm_team数据源Data Source读取一个已存在团队的完整配置配额、预算、模型权限、成员权限、元数据等。文中覆盖该数据源的完整示例、参数与导出属性说明并结合本仓库的 Go 源码与单元测试揭示其底层对 LiteLLM Proxy/team/info管理端点的调用与响应解析过程。读完你可以在不重复定义的前提下将团队配置安全地引用到litellm_key、litellm_team_member等资源中实现多配置之间的依赖与解耦。数据源概述为什么要用litellm_teamTerraform Provider 的资源Resource负责创建—更新—删除而数据源Data Source只负责读取。litellm_team数据源的设计目标非常明确——Retrieves information about an existing LiteLLM team via /team/info即通过 LiteLLM Proxy 的/team/info接口查询某个已存在团队的详情。典型的适用场景有两类引用团队外部创建的团队团队是在 LiteLLM Proxy 上通过 UI、CLI 或 API 直接创建的并不在 Terraform 管辖范围内。此时无法用litellm_team资源管理它但可以用数据源读取它的team_id、models、max_budget等字段作为其他 Terraform 配置的输入。跨配置文件引用团队由另一份 Terraform 配置或terraform import导入管理当前配置需要只读地读取团队属性。这与 Provider 中暴露的完整数据源族一致——除团队外还提供litellm_key/litellm_keys、litellm_organization、litellm_user等成对的数据源见 provider.go 中DataSourcesMap的注册清单。litellm_team单数按 ID 查询与litellm_teams复数批量列表互补前者用于精确定位一个团队后者用于按organization_id或user_id枚举团队。使用前提配置 Provider在terraform配置块中声明 provider 来源并配置 LiteLLM Proxy 地址与密钥。该 Provider 默认从LITELLM_API_BASE与LITELLM_API_KEY环境变量读取配置见 index.md也可以在 provider 块中显式给出terraform { required_providers { litellm { source registry.terraform.io/BerriAI/litellm } } } provider litellm { api_base https://your-litellm-proxy.com api_key var.litellm_api_key }Provider 还支持insecure_skip_verify可选默认false可用于自签名证书的开发环境对应LITELLM_INSECURE_SKIP_VERIFY环境变量相关实现见 provider.go。Example Usage读取团队并驱动 API Key 资源原文档给出了完整的示例配置这也是该数据源最典型的用法先读取团队再把team_id和团队允许访问的models直接注入到litellm_key资源中保证新建的密钥继承团队权限而不是在多个位置硬编码同一份模型列表。data litellm_team ml { team_id team-1234 } resource litellm_key ml_key { team_id data.litellm_team.ml.team_id models data.litellm_team.ml.models }要点解读data.litellm_team.ml.team_id是数据源声明时的入参也可用于在资源间建立显式依赖关系data.litellm_team.ml.models是服务端返回的、该团队当前可访问的模型名列表直接作为新建密钥的models避免重复维护由于数据源是只读查询团队若在 Proxy 侧被改动下次terraform plan/apply时会重新读取属性变更会触发依赖资源的重新计算。Argument Reference入参说明litellm_team只有一个必需参数参数类型是否必需说明team_idstring必需要读取的团队唯一标识。取的是 HTTP Query 参数会经过url.QueryEscape处理在 Go Schema 中对应schema.TypeStringRequired: true见 data_source_team.go。通常取值自团队的资源输出、Proxy/team/info返回或 UI 上的 Team ID。Attributes Reference完整导出属性除入参team_id外数据源会向 Terraform State 导出以下属性类型与字段均能在 data_source_team.go 的 Schema 中找到对应实现属性类型含义team_aliasstring团队的可读名称别名organization_idstring团队所属的组织 IDmodelslist(string)该团队可以访问的模型列表metadatamap(string)团队自定义元数据键值对tagslist(string)团队标签用于花费追踪与基于标签的路由soft_budget_alerting_emailslist(string)当团队花费越过soft_budget阈值时收到告警的邮箱列表tpm_limitint每分钟 Token 数tokens per minute上限rpm_limitint每分钟请求数requests per minute上限max_parallel_requestsint允许的最大并行请求数max_budgetfloat团队最大预算美元soft_budgetfloat软预算告警阈值越过该值会触发告警但不会拦截请求spendfloat团队当前已花费金额budget_durationstring预算重置周期如30d、1moblockedbool团队是否已被封禁/禁用team_member_permissionslist(string)授予团队成员的路由级权限列表如[/key/generate]created_atstring团队创建时间戳updated_atstring团队最后更新时间戳几个需要特别注意的实现细节数值字段使用指针 条件赋值读接口对tpm_limit、max_budget、spend等做了 nil 判空后再d.Set(...)data_source_team.go因此当 Proxy 返回的字段缺失时State 中对应属性不会被错误覆盖为 0避免干扰预算监控语义。tags与soft_budget_alerting_emails其实是元数据的子集在 LiteLLM 管理 API 中这两项与metadata一起存放在团队 JSON 的metadata对象内。Provider 读取后通过splitTeamMetadataresource_team.go将tags与soft_budget_alerting_emails从元数据中拆分出来分别映射成独立的 Schema 属性其余键值保留在metadata中。这也是原文档属性表中三列并列出现的根本原因。字符串时间戳created_at、updated_at以字符串形式返回如2026-01-01T00:00:00Z未做二次格式化跨时区处理交给调用方。深入原理从 Data Source 到/team/infolitellm_team的整个读取链路非常简短且清晰可以拆成三步全部实现集中在 data_source_team.go 的dataSourceLiteLLMTeamRead取入参teamID : d.Get(team_id).(string)发请求GET {api_base}/team/info?team_idurl.QueryEscape(teamID)其中endpointTeamInfo /team/info定义于 resource_team.go解码响应服务端返回的是信封结构{ team_id: team-123, team_info: { team_alias: ml-team, organization_id: org-1, models: [gpt-4o], metadata: { env: prod, tags: [ml], soft_budget_alerting_emails: [opsexample.com] }, tpm_limit: 5000, rpm_limit: 100, max_budget: 250.5, soft_budget: 200, spend: 42.25, budget_duration: 30d, blocked: true, team_member_permissions: [/key/generate], created_at: 2026-01-01T00:00:00Z, updated_at: 2026-02-01T00:00:00Z } }Provider 用teamInfoEnvelope/teamDetail两个结构体承接该响应data_source_team.go并将envelope.TeamInfo的各字段逐项写入 Terraform State。该管理接口在服务端由 LiteLLM Proxy 实现定义于 team_endpoints.py 的GET /team/info路由需携带管理密钥user_api_key_auth依赖访问。返回前文信封结构同时此端点也承担团队成员可见性校验等逻辑。单元测试验证仓库为这一数据源提供了完整单元测试 data_source_team_test.go使用httptest起本地假服务端TestDataSourceTeamRead断言请求必须是GET /team/info且携带team_idteam-123查询参数随后逐项校验team_alias、tpm_limit、max_budget、spend、blocked等属性值并专门验证tags、soft_budget_alerting_emails、metadata三者被正确拆分元数据只剩env一项tags/邮箱独立成列表TestDataSourceTeamsRead覆盖复数版litellm_teams对/team/list的调用并校验缺失字段如 team-2 未返回max_budget时导出值按 0 处理。这意味着文档中属性表的每一项均有测试断言支撑字段语义可信可复现。常见组合用法将数据源与相关资源联动可以构建三类实用场景。场景一团队在 Terraform 之外创建Terraform 只补密钥data litellm_team ml { team_id team-1234 } resource litellm_key ml_key { team_id data.litellm_team.ml.team_id models data.litellm_team.ml.models }场景二依赖团队配额做条件配置——例如仅在团队未被封禁且仍有预算时才创建密钥可通过count结合blocked/max_budget判断。场景三与密钥数据源配合做一次性核对——读取litellm_key与litellm_team将两者的team_id、models对齐校验防止权限漂移。与相关资源、数据源的关系在 provider.go 的ResourcesMap中团队相关的可管理资源包括litellm_team团队的增删改查管理资源对应/team/new、/team/info、/team/update、/team/delete见 resource_team.goSchema 支持team_alias、models、max_budget、soft_budget、tpm_limit、rpm_limit、tags、guardrails、team_member_permissions等更多可写字段litellm_team_member、litellm_team_member_add团队成员管理litellm_team_block团队封禁/解封litellm_key可在创建时绑定team_id的 API 密钥资源。查询侧还有复数数据源litellm_teams见 data_source_teams.go 对应文档支持按user_id、organization_id过滤返回ids与teams数组。如需枚举团队优先使用复数版本再对单数版本逐 ID 精确读取。单团队资源与数据源的对照可进一步参考 team.md资源文档其属性集合基本覆盖数据源的全部导出字段二者 Schema 天然对齐便于在由 Terraform 管理与仅只读引用两种模式间切换而不改变字段语义。小结litellm_team是terraform-provider-litellm中典型的只读数据源入参仅team_id一个背后是对 LiteLLM ProxyGET /team/info的一次调用与信封式 JSON 的解码。通过它团队既可以由 Proxy 侧或其他 Terraform 配置独立创建又能被密钥、团队成员等资源以声明式方式安全引用属性覆盖模型白名单、速率/并发限额、双重预算max_budget/soft_budget、花费统计、封禁状态与成员权限等完整治理维度是构建可复用的 LiteLLM IaC 治理栈中不可或缺的一环。【免费下载链接】litellmThe fastest, litest AI Gateway. Rust core with Python SDK. Call 100 LLM APIs in OpenAI (or native) format with cost tracking, guardrails, load balancing, and logging [Bedrock, Azure, OpenAI, Anthropic, OpenAI, VertexAI, vLLM, Nvidia NIM]项目地址: https://gitcode.com/GitHub_Trending/li/litellm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/10 5:06:28

CodePecker接入Gitee实战:从安全左移到DevSecOps落地

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/10 5:06:28

拖拽式甘特图:从静态计划表到实时项目驾驶舱

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/10 5:06:28

Agentic Edge AI:让智能体在边缘设备自主决策

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/10 7:56:45

CodeLlama-34B-Test:面向测试全生命周期的大模型实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/10 7:56:45

220kV双端电源线路相间距离保护Simulink仿真与三段式整定

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/10 7:56:45

CANN/GE:半精度矩阵向量乘法句柄创建

aclblasCreateHandleForHgemv 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorc…

2026/9/10 7:56:45

Skill触发失败根因分析与工程化解决框架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/10 7:56:45

国内绩效系统排名深度拆解:奇绩云科凭什么稳居前列

几乎每隔一段时间,就会有人问我:国内绩效系统排名到底谁说了算?奇绩云科这种名字听着不算老牌的产品,凭什么能冲进前列?说实话,我最早也不太理解,一个从2018年前后才真正被大家注意到的绩效管理…

2026/9/9 13:11:35

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/8 7:15:15

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/9 16:31:09

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/10 0:00:55

目录对比去重实战:用哈希算法精准清理重复文件

我电脑里现在还有一块换了三次机的“数据墓地”硬盘,里面存着2016年以前所有旧笔记本的完整备份。平时不觉得有什么,直到前阵子想把它整理归档,发现同一个安装包、同一批照片、同一份论文草稿,在几个不同的备份目录里反复出现。更…

2026/9/10 0:00:55

Leaflet离线地图完整Demo合集:内网部署与坐标纠偏实战

简介:这是一份面向Web GIS开发者的LeafLet离线地图示例合集,帮助开发者快速掌握离线地图从搭建到交互的完整流程。压缩包共723个文件,大小14.06MB,以319个js脚本、175个html页面和29个css样式文件为主体,配合png/svg图…

2026/9/10 0:00:55

MATLAB读取Rinex 3.02观测文件:多系统GNSS数据解析实战

简介:基于MATLAB开发的Rinex3.02版观测文件(o文件)读取代码包,面向卫星定位导航方向的学习者与研究人员,用于解决新版观测文件的数据解析、历元提取与时间转换问题。压缩包共4个文件,包含两个m脚本、一个19…

2026/9/7 16:23:03

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/7 22:46:00

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/9 10:21:54

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码