文本生成
Mistral 模型允许您与经过微调的模型聊天,该模型能够遵循指令并响应自然语言提示。提示是您提供给 Mistral 模型的输入。它可以采取多种形式,例如提问、给出指令或提供几个您希望模型执行任务的示例。根据提示,Mistral 模型生成文本输出作为响应。
聊天补全 API 接受聊天消息列表作为输入并生成响应。该响应以带有“助手”角色的新聊天消息形式输出。
- python
- typescript
- curl
非流式
import os
from mistralai import Mistral
api_key = os.environ["MISTRAL_API_KEY"]
model = "mistral-large-latest"
client = Mistral(api_key=api_key)
chat_response = client.chat.complete(
model = model,
messages = [
{
"role": "user",
"content": "What is the best French cheese?",
},
]
)
print(chat_response.choices[0].message.content)
流式
import os
from mistralai import Mistral
api_key = os.environ["MISTRAL_API_KEY"]
model = "mistral-large-latest"
client = Mistral(api_key=api_key)
stream_response = client.chat.stream(
model = model,
messages = [
{
"role": "user",
"content": "What is the best French cheese?",
},
]
)
for chunk in stream_response:
print(chunk.data.choices[0].delta.content)
异步
import asyncio
import os
from mistralai import Mistral
async def main():
api_key = os.environ["MISTRAL_API_KEY"]
model = "mistral-tiny"
client = Mistral(api_key=api_key)
response = await client.chat.stream_async(
model=model,
messages=[
{
"role": "user",
"content": "Who is the best French painter? Answer in JSON.",
},
],
)
async for chunk in response:
if chunk.data.choices[0].delta.content is not None:
print(chunk.data.choices[0].delta.content, end="")
if __name__ == "__main__":
asyncio.run(main())
非流式
import { Mistral } from '@mistralai/mistralai';
const apiKey = process.env.MISTRAL_API_KEY;
const client = new Mistral({apiKey: apiKey});
const chatResponse = await client.chat.complete({
model: "mistral-large-latest",
messages: [{role: 'user', content: 'What is the best French cheese?'}]
});
console.log('Chat:', chatResponse.choices[0].message.content);
流式
import { Mistral } from "@mistralai/mistralai";
const apiKey = process.env.MISTRAL_API_KEY;
const client = new Mistral({apiKey: apiKey});
const result = await client.chat.stream({
model: "mistral-small-latest",
messages: [{role: 'user', content: 'What is the best French cheese?'}],
});
for await (const chunk of result) {
const streamText = chunk.data.choices[0].delta.content;
process.stdout.write(streamText);
}
curl --location "https://api.mistral.ai/v1/chat/completions" \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header "Authorization: Bearer $MISTRAL_API_KEY" \
--data '{
"model": "mistral-large-latest",
"messages": [
{
"role": "user",
"content": "What is the best French cheese?"
}
]
}'
聊天消息
聊天消息 (messages
) 是提示或消息的集合,每条消息都被分配了特定的角色,例如“system”、“user”、“assistant”或“tool”。
- 系统消息是一条可选消息,用于设置 AI 助手在对话中的行为和上下文,例如修改其个性或提供特定指令。系统消息可以包括任务指令、个性特征、上下文信息、创造力约束以及其他相关指南,以帮助 AI 更好地理解和响应用户的输入。有关如何设置自定义系统提示词的说明,请参阅API 参考。
- 用户消息是从对话中人类的角度发送给 AI 助手的消息。它通常提供 AI 助手应响应的请求、问题或评论。用户提示词允许人类启动和引导对话,它们可用于请求信息、寻求帮助、提供反馈或与 AI 进行其他类型的互动。
- 助手消息是 AI 助手发送回用户的消息。它通常是为了回复之前的用户消息并遵循其指令,但它也可以出现在对话的开头,例如问候用户。
- 工具消息仅出现在函数调用的上下文中,用于模型必须为用户格式化工具调用的输出时的最终响应生成步骤。要了解有关函数调用的更多信息,请参阅指南。
何时使用
user
提示词与先 system
消息后 user
消息?- 您可以将
system
消息和user
消息合并到一条user
消息中,也可以将它们分成两条独立的消息。 - 我们建议您尝试这两种方式,以确定哪种方式更适合您的特定用例。
其他有用功能
-
prefix
标志允许在助手的响应内容前添加内容。当在消息中使用时,它允许在列表末尾添加一条助手消息,该消息将添加到助手的响应之前。有关其工作原理的更多详细信息,请参阅前缀。 -
safe_prompt
标志用于强制对聊天补全进行敏感内容审查(参见防护栏)。 -
stop
序列允许强制模型在遇到一个或多个选定的 token 或字符串后停止生成。停止序列示例
curl --location "https://api.mistral.ai/v1/chat/completions" \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header "Authorization: Bearer $MISTRAL_API_KEY" \
--data '{
"model": "mistral-large-latest",
"messages": [
{
"role": "user",
"content": "What is the capital of France?"
}
],
"stop": ["Paris"]
}'