inference: false
library_name: transformers
language:
- 英语
- 法语
- 德语
- 西班牙语
- 意大利语
- 葡萄牙语
- 日语
- 韩语
- 中文
- 阿拉伯语
- 希腊语
- 波斯语
- 波兰语
- 印尼语
- 捷克语
- 希伯来语
- 印地语
- 荷兰语
- 罗马尼亚语
- 俄语
- 土耳其语
- 乌克兰语
- 越南语
license: cc-by-nc-4.0
extra_gated_prompt: "提交此表单即表示您同意许可协议,并确认您提供的信息将根据Cohere的隐私政策被收集、使用和共享。您将收到关于Cohere实验室和Cohere研究、活动、产品和服务的电子邮件更新。您可以随时取消订阅。"
extra_gated_fields:
姓名: 文本
所属机构: 文本
国家: 国家
我同意仅将此模型用于非商业用途: 复选框
Cohere实验室Command A模型卡
模型概述
Cohere实验室Command A是一个开放权重的1110亿参数模型研究版本,专为需要快速、安全且高质量AI的高要求企业优化。与其他领先的专有和开放权重模型相比,Command A以最低的硬件成本提供最大性能,在业务关键型代理和多语言任务上表现出色,且仅需两块GPU即可部署。
开发方: Cohere 和 Cohere实验室
有关此模型开发过程的更多详情,请参阅我们的技术报告。
注:该模型支持256K的上下文长度,但在Hugging Face中配置为128K。如需调整,可在配置中更新此值。
试用Cohere实验室Command A
您可以在下载权重前,通过我们托管的Hugging Face Space试用Cohere实验室Command A。
使用方法
请从包含此模型必要更改的源仓库安装transformers。
from transformers import AutoTokenizer, AutoModelForCausalLM
model_id = "CohereLabs/c4ai-command-a-03-2025"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id)
messages = [{"role": "user", "content": "你好,最近怎么样?"}]
input_ids = tokenizer.apply_chat_template(messages, tokenize=True, add_generation_prompt=True, return_tensors="pt")
gen_tokens = model.generate(
input_ids,
max_new_tokens=100,
do_sample=True,
temperature=0.3,
)
gen_text = tokenizer.decode(gen_tokens[0])
print(gen_text)
模型详情
输入: 模型仅接受文本输入。
输出: 模型仅生成文本。
模型架构: 这是一个自回归语言模型,采用优化的Transformer架构。预训练后,该模型通过监督微调(SFT)和偏好训练,使其行为与人类对帮助性和安全性的偏好保持一致。模型包含三层滑动窗口注意力(窗口大小4096)和RoPE,用于高效的局部上下文建模和相对位置编码。第四层使用全局注意力,无位置嵌入,实现整个序列的无限制令牌交互。
支持语言: 模型训练涵盖23种语言:英语、法语、西班牙语、意大利语、德语、葡萄牙语、日语、韩语、阿拉伯语、中文、俄语、波兰语、土耳其语、越南语、荷兰语、捷克语、印尼语、乌克兰语、罗马尼亚语、希腊语、印地语、希伯来语和波斯语。
上下文长度: Command A支持256K的上下文长度。
聊天能力:
默认情况下,Command A配置为对话模型。前置条件使模型适应交互行为,即预期以对话方式回复,提供介绍性陈述和后续问题,并在适当情况下使用Markdown和LaTeX。这适用于交互式体验,如聊天机器人。
在其他用例中,非交互式模型行为可能更受欢迎(例如专注于任务的用例,如信息提取、文本摘要、翻译和分类)。了解如何使用系统消息实现此类非交互行为此处。
此外,Command A可配置两种安全模式,使用户能够设置既安全又适合其需求的护栏:上下文模式或严格模式。上下文模式适用于广泛交互,输出限制较少,同时通过拒绝有害或非法建议保持核心保护。Command A默认配置为上下文模式。严格模式旨在避免所有敏感话题,如暴力或性行为及脏话。更多信息,请参阅Command A提示格式文档。
RAG能力:
Command A专门针对检索增强生成(RAG)等任务的最后一步进行了训练。
通过Transformers中的聊天模板支持RAG。模型接受对话输入(带有可选的用户提供系统前置条件)以及文档片段列表。
RAG示例 [点击展开]
conversation = [{"role": "user", "content": "人类一直梦想着什么?"}]
documents = [
{"heading": "月球:我们古老的敌人", "body": "人类一直梦想摧毁月球。在这篇文章中,我将..."},
{"heading": "爱是你所需", "body": "人类的梦想一直是找到爱。这一深刻的教训..."},
]
input_prompt = tokenizer.apply_chat_template(
conversation=conversation,
documents=documents,
tokenize=False,
add_generation_prompt=True,
return_tensors="pt",
)
input_ids = tokenizer.encode_plus(input_prompt, return_tensors="pt")
然后可以像往常一样从此输入生成文本。
文档片段应为短块,而非长文档,通常每块约100-400字,格式为键值对。键应为简短的描述性字符串,值可以是文本或半结构化。
您可能会发现,直接将相关文档包含在用户消息中,与使用文档参数渲染特殊RAG模板效果相同或更好。RAG模板通常是一个强大的默认选项,非常适合需要引用的用户。我们鼓励用户尝试两种方式,并评估哪种模式最适合其特定用例。
请注意,这只是对RAG的简要介绍 - 更多信息,请参阅Command A提示格式文档和Transformers的RAG文档。
带引用的RAG [点击展开]
可选地,可以要求模型在其响应中包含基础范围(引用)以指示信息来源。代码与之前相同,除了这一行。
input_prompt = tokenizer.apply_chat_template(
conversation=conversation,
documents=documents,
tokenize=False,
add_generation_prompt=True,
return_tensors="pt",
enable_citations=True,
)
输出如下:模型将文本片段(称为“范围”)与支持它们的特定文档片段(称为“来源”)关联起来。Command A使用一对标签“<co>”和“</co>”来指示范围可以基于来源列表。例如,“<co>范围</co: 0:[0,1]>”表示“范围”由最后一条消息中提供的文档片段0和1支持。
工具使用能力:
Command A专门针对对话工具使用能力进行了训练。这使得模型能够与API、数据库或搜索引擎等外部工具交互。
通过Transformers中的聊天模板支持工具使用。我们建议使用JSON模式提供工具描述。
工具使用示例 [点击展开]
tools = [{
"type": "function",
"function": {
"name": "query_daily_sales_report",
"description": "连接到数据库以检索某一天的总体销售量和销售信息。",
"parameters": {
"type": "object",
"properties": {
"day": {
"description": "检索此日期的销售数据,格式为YYYY-MM-DD。",
"type": "string",
}
},
"required": ["day"]
},
}
}]
conversation = [{"role": "user", "content": "你能提供2023年9月29日的销售摘要吗?"}]
input_prompt = tokenizer.apply_chat_template(conversation=conversation, tools=tools, tokenize=False, add_generation_prompt=True, return_tensors="pt"))
input_ids = tokenizer.encode_plus(input_prompt, return_tensors="pt")
然后可以像往常一样从此输入生成。
如果模型生成计划和工具调用,应将其添加到聊天历史记录中,如下所示:
tool_call = {"name": "query_daily_sales_report", "arguments": {"day": "2023-09-29"}}
tool_plan = "我将使用query_daily_sales_report工具查找2023年9月29日的销售摘要。"
conversation.append({"role": "assistant", "tool_calls": [{"id": "0", "type": "function", "function": tool_call}], "tool_plan": tool_plan})
然后调用工具并追加结果,作为字典,带有工具角色,如下所示:
api_response_query_daily_sales_report = {"date": "2023-09-29", "summary": "总销售额: 10000, 总销售单位: 250"}
conversation.append({"role": "tool", "tool_call_id": "0", "content": api_response_query_daily_sales_report})
之后,可以再次generate()让模型在聊天中使用工具结果。
请注意,这只是对工具调用的简要介绍 - 更多信息,请参阅Command A提示格式文档和Transformers的工具使用文档。
带引用的工具使用 [点击展开]
可选地,可以通过在tokenizer.apply_chat_template(中使用enable_citations=True,要求模型在其响应中包含基础范围(引用)以指示信息来源。生成将如下所示:
2023年9月29日,总销售额为<co>10000</co: 0:[0]>,总销售单位为<co>250。</co: 0:[0]>
当开启引用时,模型将文本片段(称为“范围”)与支持它们的特定工具结果(称为“来源”)关联起来。Command A使用一对标签“<co>”和“</co>”来指示范围可以基于来源列表,在结束标签中列出它们。例如,“<co>范围</co: 0:[1,2],1:[0]>”表示“范围”由“tool_call_id=0”的结果1和2以及“tool_call_id=1”的结果0支持。来自同一工具调用的来源被分组并列为“{tool_call_id}:[{结果索引列表}]”,然后通过“,”连接。
代码能力:
Command A在代码能力上有显著提升。除了学术代码基准测试外,我们还评估了其在企业相关场景中的表现,包括SQL生成和代码翻译,其表现优于类似规模的其他模型。通过请求代码片段、代码解释或代码重写来尝试这些功能。为了获得更好的性能,我们还建议在代码生成相关指令中使用低温(甚至贪婪解码)。
模型卡联系
有关此模型卡中的错误或其他问题,请联系labs@cohere