经 AI Skill Hub 精选评估,中文大模型通用SDK 获评「推荐使用」。这款AI工具在功能完整性、社区活跃度和易用性方面表现出色,AI 评分 7.8 分,适合有一定技术背景的用户使用。
专为中文优化的AI大模型SDK,提供统一接口适配、响应解析增强和批量处理能力。深度集成OpenAI生态的LangChain、LlamaIndex、AutoGen等框架,适合构建中文AI应用和工作流的开发者。
中文大模型通用SDK 是一款基于 Python 开发的开源工具,专注于 SDK、中文大模型、工作流 等核心功能。作为 GitHub 开源项目,它拥有活跃的社区支持和持续的版本迭代,代码完全透明可审计,支持本地部署以保护数据隐私。无论是个人使用还是集成到企业工作流,都能提供稳定可靠的解决方案。
专为中文优化的AI大模型SDK,提供统一接口适配、响应解析增强和批量处理能力。深度集成OpenAI生态的LangChain、LlamaIndex、AutoGen等框架,适合构建中文AI应用和工作流的开发者。
中文大模型通用SDK 是一款基于 Python 开发的开源工具,专注于 SDK、中文大模型、工作流 等核心功能。作为 GitHub 开源项目,它拥有活跃的社区支持和持续的版本迭代,代码完全透明可审计,支持本地部署以保护数据隐私。无论是个人使用还是集成到企业工作流,都能提供稳定可靠的解决方案。
# 方式一:pip 安装(推荐)
pip install cnllm
# 方式二:虚拟环境安装(推荐生产环境)
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install cnllm
# 方式三:从源码安装(获取最新功能)
git clone https://github.com/kanchengw/cnllm
cd cnllm
pip install -e .
# 验证安装
python -c "import cnllm; print('安装成功')"
# 命令行使用
cnllm --help
# 基本用法
cnllm input_file -o output_file
# Python 代码中调用
import cnllm
# 示例
result = cnllm.process("input")
print(result)
# cnllm 配置文件示例(config.yml) app: name: "cnllm" debug: false log_level: "INFO" # 运行时指定配置文件 cnllm --config config.yml # 或通过环境变量配置 export CNLLM_API_KEY="your-key" export CNLLM_OUTPUT_DIR="./output"
![Figure 1][Figure 1]
[Figure 1]: pics/figure_1.png
deepseek-chat、deepseek-reasoner、deepseek-v4-pro、deepseek-v4-flashkimi-k2.6、kimi-k2.5、moonshot-v1-128k(moonshot-v1)、moonshot-v1-8k、moonshot-v1-32k、moonshot-v1-vision-previewdoubao-seed-2-0-pro-260215(doubao-seed-2-0-pro)、doubao-seed-2-0-mini-260215(doubao-seed-2-0-mini)、doubao-seed-2-0-lite-260215(doubao-seed-2-0-lite)、doubao-seed-2-0-code-preview-260215(doubao-seed-2-0-code)、doubao-seed-1-8-251228(doubao-seed-1-8)、doubao-seed-1-6-251015(doubao-seed-1-6)、doubao-seed-1-6-flash-250828(doubao-seed-1-6-flash)、doubao-seed-1-6-vision-250815(doubao-seed-1-6-vision)、doubao-1-5-vision-pro-32k-250115(doubao-1-5-vision-pro)、doubao-seed-1-5-lite-32k-250115(doubao-seed-1-5-lite)、doubao-seed-1-5-pro-32k-250115(doubao-seed-1-5-pro-32k)、doubao-seed-1-5-pro-256k-250115(doubao-seed-1-5-pro)glm-4.6、glm-4.7、glm-4.7-flash、glm-4.7-flashx、glm-5、glm-5-turbo、glm-5.1、glm-4.5、glm-4.5-x、glm-4.5-air、glm-4.5-airx、glm-4.5-flash、glm-5v-turbo、glm-4.5v、glm-4.6v、glm-4.6v-flashmimo-v2-pro、mimo-v2-omni、mimo-v2-flash、mimo-v2.5-pro、mimo-v2.5MiniMax-M2、MiniMax-M2.1、MiniMax-M2.5、MiniMax-M2.5-highspeed、MiniMax-M2.7、MiniMax-M2.7-highspeedqwen3.6-max-preview、qwen3.6-plus、qwen3.6-flash、qwen3.5-plus、qwen3.5-flash、qwen3.5-397b-a17b、qwen3.5-122b-a10b、qwen3.5-27b、qwen3.5-35b-a3bernie-5.1、ernie-5.0、ernie-5.0-thinking-perview、ernie-4.5-8k-preview、ernie-4.5-turbo-128k(ernie-4.5-turbo)、ernie-4.5-turbo-32k、ernie-4.5-turbo-vl、ernie-4.5-turbo-vl-32k、ernie-4.5-0.3b、ernie-speed-pro-128k(ernie-speed-pro)、ernie-lite-pro-128k(ernie-lite-pro)、ernie-x1.1、ernie-x1-turbo-32k(ernie-x1-turbo)hy3-preview、hunyuan-2.0-thinking-20251109(hunyuan-2.0-thinking)、hunyuan-2.0-instruct-20251111(hunyuan-2.0-instruct)embedding-2、embedding-3、embedding-3-protext-embedding-v4、text-embedding-v3、text-embedding-v2、text-embedding-v1embedding-v1、bge-large-zh、bge-large-en批量 chat completions/Embeddings 调用都支持进度回调、自定义请求 ID 、遇错停止、字段存储控制、未知参数处理策略。
通过 custom_ids 参数为批量请求指定自定义 ID,批量响应中会替换原 request\_id。
resp = client.embeddings.batch(
input=["文本1", "文本2", "文本3"],
custom_ids=["doc_001", "doc_002", "doc_003"]
)
resp.results["doc_001"] # 获取 doc_001 的响应
resp.think["doc_002"] # 获取 doc_002 的推理内容
回调会在每个请求完成时被调用,可以用于:
def on_complete(request_id, status): # 回调函数示例,支持自定义
print(f"[{request_id}] {status}")
resp = client.chat.batch(
requests,
callbacks=[on_complete]
)
当批量请求遭遇第一个错误时,会立即抛出异常并中断后续任务,若批量请求中存在成功请求,则同时返回批量对象,其中包含已处理的请求结果,可被正常访问:
```python resp = client.embeddings.batch( input=requests, stop_on_error=True )
#### 1.1.1 SDK 安装
pip install cnllm
一键安装:
npx skills add https://github.com/kanchengw/cnllm
或手动将项目根目录的 SKILL.md 文件复制到 Agent 的技能目录下,在调用中文大模型时, 会优先使用 CNLLM。
print(resp.results)
**to\_dict():** 将响应转换为字典,保留指定字段,未在 keep 声明的字段若保留会产生警告:
python resp.to_dict() # 默认:保留 vectors 字段 + 元数据 (status/usage/batch_info) resp.to_dict(results=True) # 保留 results 字段 + 元数据 (status/usage/batch_info) ```
批量调用支持重试策略、并发控制参数配置:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
batch_size | int | 动态计算 | 批处理大小,仅 Embeddings 调用支持配置 |
max_concurrent | int | 12/3 | 最大并发数,Embeddings 默认12,Chat completions 默认3 |
rps | float | 10/2 | 每秒请求数,Embeddings 默认10,Chat completions 默认2 |
timeout | int | 30 | 单请求超时(秒) |
max_retries | int | 3 | 最大重试次数 |
retry_delay | float | 1.0 | 重试延迟(秒) |
batch\_size: 仅支持批量 Embeddings 调用时配置,默认根据请求数量自适应计算,不建议手动配置。
除下表中作特殊说明的参数,其他参数都接受在客户端初始化和调用入口配置,调用入口处的配置会覆盖客户端初始化的配置。
CNLLM 请求参数与OpenAI 标准参数基本一致,覆盖范围基于国内厂商情况稍有扩展,未覆盖的参数则使用厂商命名并进行透传。 注:并非所有支持模型都支持全部请求参数,请参考厂商官方文档确认,或配置 drop_params="ignore" 以忽略不支持的参数。
| 参数 | 类型 | 默认值 | 说明 | | ------------------- | ------------------------------- | ------------------------------- | ------------------------------------------------------ | | model | str | - | 模型名称,客户端初始化必填,调用入口可覆盖 | | api_key | str | - | API 密钥 | | base_url | str | 自动适配 | 可自定义 API 地址 | | messages | list[dict]/list[list[dict]] | - | chat() 输入参数,支持上下文管理/图片识别(仅支持调用入口配置) | | prompt | str/list[str] | - | chat() 输入参数(仅支持调用入口配置) | | requests | list[dict] | - | chat.batch() 输入参数,支持对批量请求中 per-request 独立配置(仅支持调用入口配置) | | input | str/list[str] | - | embeddings() 输入参数(仅支持调用入口配置) | | stream | bool | False | 流式响应 | | thinking ¹ | bool/dict | 由模型端口决定,默认多为 False | 思考模式,支持 True/False,部分模型支持 "auto" | | tools | list | - | 工具/函数定义列表 |
¹ thinking 映射: - GLM、DeepSeek、Baidu、Hunyuan、Xiaomi、Kimi:True → {"type": "enabled"},False → {"type": "disabled"} - Doubao:True → "enabled",False → "disabled","auto" → "auto" - Qwen:True → enable_thinking: true,False → enable_thinking: false
| 参数 | 类型 | 默认值 | 说明 | | ------------------- | ------------------------------- | ------------------------------- | ------------------------------------------------------ | | temperature | float | 由模型端口决定 | 生成随机性 | | max_completion_tokens | int | 由模型端口决定 | 最大生成 token 数(包含思维链) | | max_tokens | int | 由模型端口决定 | 最大生成 token 数(不包含思维链) | | top_p | float | 由模型端口决定 | 核采样阈值 | | stop | str/list | - | 停止序列 | | reasoning_effort | str | 由模型端口决定 | 推理深度控制 | | tool_choice | str/dict | - | 工具选择策略 | | response_format | dict | 由模型端口决定,默认多为 {"type": "text"} | 响应格式 | | n | int | 1 | 生成候选数 | | presence_penalty | float | - | 存在惩罚 | | frequency_penalty | float | - | 频率惩罚 | | logit_bias | dict | - | Token 级别偏差 | | user ¹ | str | - | 用户标识 | | seed | int | - | 随机种子,相同 seed 可复现结果 | | stream_options | dict | - | 流式输出配置,如 {"include_usage": true} | | logprobs | bool | False | 是否返回输出 Token 的对数概率 | | top_logprobs | int | 0 | 每个位置返回概率最高的候选 Token 个数 |
¹ user 映射: - GLM: user → user_id
4.1.1/4.1.2 中未覆盖的其他模型支持的参数,CNLLM 会透传到模型端口。
| 厂商 | 透传参数 |
|---|---|
| **KIMI** | prompt_cache_key, safety_identifier, stream_options |
| **Doubao** | service_tier, stream_options |
| **GLM** | do_sample, request_id, tool_stream, dimensions |
| **MiniMax** | stream_options(原生接口),group_id(原生接口) |
| **千问Qwen** | enable_thinking, preserve_thinking, thinking_budget, top_k, repetition_penalty, vl_high_resolution_images, enable_code_interpreter, enable_search, search_options, parallel_tool_calls, dimensions |
| **百度千帆Baidu** | enable_thinking, thinking_budget, thinking_strategy, penalty_score, repetition_penalty, parallel_tool_calls, web_search, metadata |
CNLLM 内部定义的参数,控制内部执行的行为或策略,不向 API 端口传输。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
timeout | int | 60 | 请求超时(秒) |
max_retries | int | 3 | 最大重试次数 |
retry_delay | float | 1.0 | 重试延迟(秒) |
fallback_models¹ | dict | - | 备用模型(仅支持客户端初始化配置),见下方说明 |
drop_params | str | "warn" | 见 [未知参数处理策略](#255) |
¹fallback_models 模型降级策略:
备用模型仅支持客户端初始化时配置,若 model 未成功响应,将顺序尝试传入的fallback_models,对应用的稳健性有要求,建议配置此项,并配置 drop_params="ignore" 避免参数支持性的影响。
fallback_models = {
"deepseek-chat": {
"api_key": "ds-key-456", # 必填
"base_url": "https://api.deepseek.com/v1",
},
"qwen-plus": {
"api_key": "my-key", # 不配置 base_url 时,使用默认 URL
},
}
说明: - 调用入口处再次指定 model 会覆盖客户端配置的主模型,当调用入口的 model 失败时,仍会尝试 fallback_models - chat.batch() 中按 per-req 尝试 fallback - 不可重试的错误(模型不存在、参数缺失、内容过滤)会直接抛出,不触发 fallback - 全部模型失败时抛出 FallbackError,聚合所有失败信息
仅对 chat.batch() 和 embeddings.batch() 调用生效:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
max_concurrent | int | Chat: 3 / Embeddings: 12 | 最大并发数 |
rps | float | Chat: 2 / Embeddings: 10 | 每秒请求数限制 |
batch_size | int | 动态计算 | 批处理大小,仅 Embeddings 支持 |
stop_on_error | bool | False | 遇错时停止后续请求,返回已处理结果 |
callbacks | list | - | 进度回调函数列表 |
custom_ids | list[str] | - | 自定义请求 ID 列表 |
keep | set/list | 见 [字段存储控制](#254) | 迭代后保留的数据字段 |
class Person(BaseModel): name: str = Field(description="姓名") age: int = Field(description="年龄")
structured = runnable.with_structured_output(Person) result = structured.invoke("张三28岁") print(result) # → Person(name="张三", age=28)
```
{'id': 'chatcmpl-xxx', 'object': 'chat.completion.chunk', 'created': 1234567890, 'model': 'minimax-m2.7', 'choices': [{'index': 0, 'delta': {'reasoning_content': '推理..'}, 'finish_reason': None}]}
针对中文大模型优化的实用SDK,解决OpenAI生态中文适配痛点,架构清晰功能完整,值得关注
AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。
建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。
✅ Apache 2.0 — 宽松开源协议,可商用,需保留版权声明和 NOTICE 文件,含专利授权条款。
AI Skill Hub 点评:中文大模型通用SDK 的核心功能完整,质量良好。对于AI 技术爱好者来说,这是一个值得纳入个人工具库的选择。建议先在非生产环境试用,再逐步推广。
| 原始名称 | cnllm |
| Topics | SDK中文大模型工作流接口适配批量处理 |
| GitHub | https://github.com/kanchengw/cnllm |
| License | Apache-2.0 |
| 语言 | Python |
收录时间:2026-05-23 · 更新时间:2026-05-24 · License:Apache-2.0 · AI Skill Hub 不对第三方内容的准确性作法律背书。