🚀 Sarvam-M
sarvam-m
是一个基于 Mistral-Small 构建的多语言、混合推理、纯文本语言模型。它在基础模型上实现了显著改进,能有效解决多语言场景下的推理和对话问题,为用户提供更优质的语言交互体验。
🚀 快速开始
以下代码片段展示了如何使用 Transformers 库来使用 sarvam-m
。
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "sarvamai/sarvam-m"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name, torch_dtype="auto", device_map="auto"
)
prompt = "Who are you and what is your purpose on this planet?"
messages = [{"role": "user", "content": prompt}]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
enable_thinking=True,
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
generated_ids = model.generate(**model_inputs, max_new_tokens=8192)
output_ids = generated_ids[0][len(model_inputs.input_ids[0]) :].tolist()
output_text = tokenizer.decode(output_ids)
if "</think>" in output_text:
reasoning_content = output_text.split("</think>")[0].rstrip("\n")
content = output_text.split("</think>")[-1].lstrip("\n").rstrip("</s>")
else:
reasoning_content = ""
content = output_text.rstrip("</s>")
print("reasoning content:", reasoning_content)
print("content:", content)
⚠️ 重要提示
对于思考模式,建议设置 temperature=0.5
;对于非思考模式,建议设置 temperature=0.2
。
✨ 主要特性
- 混合思考模式:一个通用模型支持“思考”和“非思考”两种模式。在处理复杂逻辑推理、数学问题和编码任务时使用思考模式,或者切换到非思考模式进行高效的通用对话。
- 先进的印度语技能:专门在英语和印度语言上进行了后续训练,真实反映并强调了印度文化价值观。
- 卓越的推理能力:在编码和数学基准测试中优于大多数同等规模的模型,展现出出色的推理能力。
- 无缝聊天体验:完全支持印度语脚本和罗马化版本的印度语言,提供流畅且便捷的多语言对话体验。
📚 详细文档
模型信息
sarvam-m
是一个基于 Mistral-Small 的多语言、混合推理、纯文本语言模型。这个后续训练版本在基础模型上实现了显著改进:
- 在印度语言基准测试中平均提高了 20%。
- 在数学基准测试中提高了 21.6%。
- 在编程基准测试中提高了 17.6%。
在印度语言和数学的交叉领域,性能提升更为显著,在罗马化印度语言 GSM - 8K 基准测试中提高了惊人的 86%。
在我们详细的 博客文章 中了解更多关于 sarvam-m
的信息。
使用 Sarvam API
from openai import OpenAI
base_url = "https://api.sarvam.ai/v1"
model_name = "sarvam-m"
api_key = "Your-API-Key"
client = OpenAI(
base_url=base_url,
api_key=api_key,
).with_options(max_retries=1)
messages = [
{"role": "system", "content": "You're a helpful AI assistant"},
{"role": "user", "content": "Explain quantum computing in simple terms"},
]
response1 = client.chat.completions.create(
model=model_name,
messages=messages,
reasoning_effort="medium",
max_completion_tokens=4096,
)
print("First response:", response1.choices[0].message.content)
messages.extend(
[
{
"role": "assistant",
"content": response1.choices[0].message.content,
},
{"role": "user", "content": "Can you give an analogy for superposition?"},
]
)
response2 = client.chat.completions.create(
model=model_name,
messages=messages,
reasoning_effort="medium",
max_completion_tokens=8192,
)
print("Follow-up response:", response2.choices[0].message.content)
参考 API 文档:sarvam 聊天完成 API 文档
reasoning_effort
可以取三个可能的值:low
、medium
和 high
,以与 OpenAI API 规范保持一致。设置这三个值中的任何一个都将启用 sarvam-m
的思考模式。
VLLM 部署
为了便于部署,我们可以使用 vllm>=0.8.5
并通过 vllm serve sarvamai/sarvam-m
创建一个与 OpenAI 兼容的 API 端点。
如果你想在 Python 中使用 vLLM,可以执行以下操作。
from openai import OpenAI
openai_api_key = "EMPTY"
openai_api_base = "http://localhost:8000/v1"
client = OpenAI(
api_key=openai_api_key,
base_url=openai_api_base,
)
models = client.models.list()
model = models.data[0].id
messages = [{"role": "user", "content": "Why is 42 the best number?"}]
response = client.chat.completions.create(model=model, messages=messages)
output_text = response.choices[0].message.content
if "</think>" in output_text:
reasoning_content = output_text.split("</think>")[0].rstrip("\n")
content = output_text.split("</think>")[-1].lstrip("\n")
else:
reasoning_content = ""
content = output_text
print("reasoning content:", reasoning_content)
print("content:", content)
messages.append(
{"role": "assistant", "content": output_text}
)
📄 许可证
本项目采用 apache-2.0
许可证。