소스 정보
- 저장소
- jeffstric/ZJT
- 최근 소스 활동
- 2026년 7월 17일 17:50
- 감지된 SKILL.md 언어
- 중국어
- 스타
- 200
- 포크
- 48
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/jeffstric/ZJT --skill add-llm-model명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SKILL.md 표시 중
SOC 직업 분류 기준
| name | add-llm-model |
| description | 新增 LLM 模型专家,指导如何在本项目中添加新的 LLM 供应商和模型。当需要接入新的大语言模型(如 OpenAI、Codex、DeepSeek 等)时使用。 |
| allowed-tools | Read, Write, Terminal |
你是一位 LLM 集成专家,负责在本项目中添加新的大语言模型供应商和模型。
项目根目录/
├── llm/ # LLM 客户端目录
│ ├── openai_base_client.py # OpenAI 兼容格式基类
│ ├── llm_client_factory.py # 客户端工厂(路由)
│ ├── openai_deepseek.py # DeepSeek 客户端示例
│ └── ...
├── config/
│ └── constant.py # 常量定义(LLMVendor, LLMModel)
└── alembic/versions/ # 数据库迁移脚本
先检查 config/constant.py,确认供应商和模型常量是否已存在:
LLMVendor 类中是否已有该供应商LLMModel 类中是否已有该模型MODEL_PREFIX_VENDOR_MAP 是否已有映射判断逻辑:
llm/ 目录下是否有对应文件,如有则复用添加常量(如不存在):
修改 config/constant.py,添加供应商和模型常量。
1. 添加供应商常量(LLMVendor 类):
class LLMVendor:
# ... 已有供应商
{VENDOR} = '{vendor}' # {Vendor} 供应商({Model} 模型)
2. 添加模型常量(LLMModel 类):
class LLMModel:
# ... 已有模型
# {Vendor} 模型
{MODEL_CONST} = '{model-name}'
3. 添加前缀映射(MODEL_PREFIX_VENDOR_MAP):
MODEL_PREFIX_VENDOR_MAP = {
# ... 已有映射
'{model-prefix}': LLMVendor.{VENDOR},
}
先检查 llm/ 目录下是否已有对应供应商的客户端文件:
openai_{vendor}.py),可复用,跳过本步文件命名:openai_{vendor}.py(如 openai_deepseek.py)
模板代码:
"""
{Vendor} OpenAI 兼容格式 LLM 客户端
支持 {model-list} 系列模型
"""
import logging
from .openai_base_client import OpenAIBaseClient
from config.config_util import get_dynamic_config_value
logger = logging.getLogger(__name__)
class {Vendor}OpenAIClient(OpenAIBaseClient):
"""{Vendor} OpenAI 兼容格式 LLM 客户端"""
# model 表友好名称 -> 实际 API endpoint model ID 映射
_MODEL_NAME_MAP = {
'model-name-in-db': 'actual-api-model-id',
# 可添加更多映射
}
def _refresh_config(self):
"""刷新配置"""
self.api_key = get_dynamic_config_value('llm', '{vendor}', 'api_key', default='')
self.base_url = get_dynamic_config_value(
'llm', '{vendor}', 'base_url',
default='https://api.{vendor}.com'
)
self.vendor_name = '{vendor}'
# 如果支持思考模式,设置 thinking_mode
# self.thinking_mode = 'enable_thinking'
if self.api_key:
logger.info(f"{Vendor}OpenAIClient config loaded: base_url={self.base_url}")
else:
logger.warning("{Vendor}OpenAIClient: API Key 未配置")
def _resolve_model_name(self, model: str) -> str:
actual = ._MODEL_NAME_MAP.get(model, model)
actual != model:
logger.debug()
actual
_{vendor}_client =
{vendor}_openai_client() -> {Vendor}OpenAIClient:
_{vendor}_client
_{vendor}_client :
_{vendor}_client = {Vendor}OpenAIClient()
:
_{vendor}_client._refresh_config()
_{vendor}_client
修改 llm/llm_client_factory.py:
1. 添加导入:
from .openai_{vendor} import {Vendor}OpenAIClient, get_{vendor}_openai_client
2. 注册到 _VENDOR_CLIENT_MAP:
class LLMClientFactory:
_VENDOR_CLIENT_MAP = {
# ... 已有供应商
LLMVendor.{VENDOR}: get_{vendor}_openai_client,
}
3. 添加配置检查(get_available_models 函数内的 vendor_config_map):
vendor_config_map = {
# ... 已有配置
'{vendor}': ('llm', '{vendor}', 'api_key'),
}
注意:model/vendor.py 是数据库 vendor 表的 DAO 类,无需修改。供应商数据通过迁移脚本插入到数据库中。
在 alembic/versions/ 目录下创建迁移脚本,添加供应商、模型和计费配置。
文件命名:YYYYMMDD_add_{vendor}_models.py
迁移脚本模板:
"""Add {Vendor} vendor and models
Revision ID: YYYYMMDD_add_{vendor}
Revises: {上一个revision}
Create Date: YYYY-MM-DD
"""
from typing import Sequence, Union
from alembic import op
from sqlalchemy import text
import logging
logger = logging.getLogger(__name__)
revision: str = 'YYYYMMDD_add_{vendor}'
down_revision: Union[str, None] = '{上一个revision}'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None:
"""Add {vendor} vendor, models, and billing config"""
conn = op.get_bind()
# 1. 添加供应商
conn.execute(text("""
INSERT INTO vendor (vendor_name, created_at, note)
VALUES ('{vendor}', NOW(), '{Vendor} API')
ON DUPLICATE KEY UPDATE vendor_name = VALUES(vendor_name)
"""))
logger.info("[Migration] Inserted {vendor} vendor")
# 2. 添加模型
conn.execute(text("""
INSERT INTO `model` (model_name, context_window, supports_tools, max_output_tokens, supports_thinking, created_at, note)
VALUES ('{model-name}', {context_window}, {supports_tools}, {max_output_tokens}, {supports_thinking}, NOW(), '{note}')
ON DUPLICATE KEY UPDATE model_name = VALUES(model_name)
"""))
logger.info("[Migration] Inserted {model-name} model")
# 3. 添加计费配置 (vendor_model)
conn.execute(text())
logger.info()
() -> :
conn = op.get_bind()
conn.execute(text())
logger.info()
conn.execute(text())
logger.info()
conn.execute(text())
logger.info()
新增供应商后,必须在配置文件和热更新定义中添加对应条目,否则管理后台无法配置该供应商。
1. config.example.yml 和 config_prod.base.yaml — 在 llm 节点下新增供应商配置段(两个文件格式一致):
llm:
# ... 已有供应商
{vendor}:
api_key: "" # 必填,空字符串表示未配置
base_url: "https://api.{vendor}.com" # 可选,有默认值时填写
2. config/default_configs.py — 在 DEFAULT_CONFIGS 列表中添加热更新配置项:
# ==================== {Vendor} 配置 ====================
{
'key': 'llm.{vendor}.api_key',
'value_type': 'string',
'description': '{Vendor} API Key',
'editable': True,
'is_sensitive': True,
'quick_config': True
},
{
'key': 'llm.{vendor}.base_url',
'value_type': 'string',
'description': '{Vendor} API 基础URL(默认 https://api.{vendor}.com)',
'editable': True,
'is_sensitive': False,
'quick_config': True
},
注意:
quick_config: True使配置项出现在管理后台的快速配置弹窗中,方便用户快速填入 API Key。
核心公式:threshold = 0.04 × 10^6 / 单价(元/百万token)
示例(DeepSeek V4 Flash):
threshold = 0.04 × 10^6 / 1 = 40000threshold = 0.04 × 10^6 / 2 = 20000threshold = 0.04 × 10^6 / 0.02 = 2000000新增供应商需要在配置文件中添加对应配置项:
llm:
{vendor}:
api_key: "your-api-key"
base_url: "https://api.{vendor}.com" # 可选,有默认值
完成新增 LLM 模型后,按顺序确认以下事项:
第一步:常量检查与添加
config/constant.py - 已检查/添加 LLMVendor.{VENDOR} 常量config/constant.py - 已检查/添加 LLMModel.{MODEL} 常量config/constant.py - 已检查/添加 MODEL_PREFIX_VENDOR_MAP 映射第二步:客户端文件
llm/openai_{vendor}.py - 已检查是否存在,如不存在则创建第三步:工厂注册
llm/llm_client_factory.py - 已导入新客户端llm/llm_client_factory.py - 已注册到 _VENDOR_CLIENT_MAPllm/llm_client_factory.py - 已添加配置检查第四步:数据库迁移
alembic/versions/ - 已创建迁移脚本(vendor + model + vendor_model 计费)第五步:配置文件与热更新
config.example.yml - 已在 llm 节点下新增 {vendor} 配置段(api_key + base_url)config_prod.base.yaml - 已在 llm 节点下新增 {vendor} 配置段(与 config.example.yml 一致)config/default_configs.py - 已在 DEFAULT_CONFIGS 中新增 llm.{vendor}.api_key 和 llm.{vendor}.base_url 热更新项A: 参考模型官方文档:
context_window: 上下文窗口大小(token 数)max_output_tokens: 最大输出 token 数supports_tools: 是否支持函数调用(1/0)supports_thinking: 是否支持思考模式(1/0)A: 当数据库存储的友好名称与 API 实际 model ID 不同时需要映射。
A:
alembic upgrade head