client-python

GitHub
720 175 简单 1 次阅读 2天前Apache-2.0语言模型开发框架Agent
AI 解读 由 AI 自动生成,仅供参考

client-python 是 Mistral AI 官方推出的 Python 客户端库,旨在帮助开发者轻松接入 Mistral 大模型平台。它封装了复杂的 API 调用细节,让使用者只需几行代码即可调用强大的聊天补全(Chat Completion)和文本嵌入(Embeddings)功能,从而快速构建智能应用或进行算法验证。

这款工具主要解决了开发者在集成大模型时面临的配置繁琐、请求处理复杂以及错误重试机制缺失等痛点。通过提供简洁的接口,它支持流式响应(Server-sent events)、自动分页、文件上传及灵活的重试策略,显著提升了开发效率与系统稳定性。此外,它还兼容 uv、pip 和 Poetry 等多种主流包管理工具,并针对 Agent 开发提供了额外的依赖支持。

client-python 非常适合 Python 开发者、AI 研究人员以及需要在大模型基础上进行二次创作的技术团队使用。无论是希望快速原型验证的研究者,还是致力于生产环境部署的工程师,都能借助其现代化的设计和完善的文档,顺畅地将 Mistral 的先进能力融入自己的项目中。

使用场景

某电商公司的数据团队需要构建一个实时智能客服系统,自动处理用户关于订单状态和退货政策的咨询。

没有 client-python 时

  • 开发人员必须手动编写复杂的 HTTP 请求代码来处理鉴权、重试机制和错误捕获,导致核心业务逻辑被大量样板代码淹没。
  • 实现流式回复(Server-sent events)以模拟真人打字效果时,需底层解析 SSE 数据流,开发难度大且容易出现连接中断问题。
  • 每次升级 Mistral AI 接口版本时,团队需要人工对照文档修改请求参数结构,极易因字段不匹配引发线上故障。
  • 缺乏统一的类型提示和 IDE 支持,调试 API 调用参数耗时费力,新成员上手门槛高。

使用 client-python 后

  • 只需几行代码即可初始化 Mistral 客户端并自动处理 API Key 认证、网络重试及异常管理,让团队专注于对话策略设计。
  • 内置原生流式传输支持,通过简单的迭代器即可轻松实现流畅的打字机效果,显著提升用户交互体验。
  • 库内部已适配最新的 API 规范,配合清晰的迁移指南,确保接口升级时业务代码无需大幅重构即可平滑过渡。
  • 提供完善的类型注解和 IDE 智能补全,开发者在编码阶段即可发现参数错误,大幅缩短调试周期。

client-python 将繁琐的底层通信细节封装为简洁的 Python 接口,让开发者能高效、稳定地将顶尖大模型能力集成到生产环境中。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU

未说明

内存

未说明

依赖
notes该工具是 Mistral AI 的 Python 客户端 SDK,用于调用云端 API(包括标准端点、Azure AI 和 Google Cloud Vertex AI),而非在本地运行模型,因此无需本地 GPU 或大内存。使用 Agents 功能需安装额外依赖 `mistralai[agents]`。支持同步和异步请求。需配置 MISTRAL_API_KEY 环境变量或使用云服务商的认证方式。
python3.10+
mistralai
asyncio
google-auth (可选,用于 GCP)
mistralai-workflows (可选)
client-python hero image

快速开始

Mistral Python 客户端

从 v1 迁移到 v2

如果您正在从 v1 升级到 v2,请查看迁移指南,了解破坏性变更以及如何更新您的代码。

API 密钥设置

在开始之前,您需要一个 Mistral AI 的 API 密钥。

  1. 获取您自己的 Mistral API 密钥: https://docs.mistral.ai/#api-access
  2. 将您的 Mistral API 密钥设置为环境变量。您只需执行一次此操作。
# 设置 Mistral API 密钥(以 zsh 为例)
$ echo 'export MISTRAL_API_KEY=[your_key_here]' >> ~/.zshenv

# 重新加载环境变量(或直接退出并打开一个新的终端)
$ source ~/.zshenv

摘要

Mistral AI API:我们的聊天完成和嵌入 API 规范。在 La Plateforme 上创建您的账户以获取访问权限,并阅读文档,了解如何使用它。

目录

SDK 安装

[!NOTE] Python 版本升级政策

一旦某个 Python 版本达到其官方终止支持日期,将为用户提供 3 个月的宽限期以便升级。在此宽限期之后,SDK 所支持的最低 Python 版本将会更新。

SDK 可以通过 uvpippoetry 包管理器进行安装。

uv

uv 是一个快速的 Python 包安装和解析工具,旨在作为 pip 和 pip-tools 的替代品。由于其速度和现代 Python 工具链功能,推荐使用。

uv add mistralai

PIP

PIP 是 Python 的默认包管理器,可通过命令行轻松地从 PyPI 安装和管理软件包。

pip install mistralai

Poetry

Poetry 是一种现代化的工具,通过使用单个 pyproject.toml 文件来管理项目元数据和依赖关系,从而简化了依赖管理和软件包发布。

poetry add mistralai

使用 uv 进行 Shell 和脚本操作

您可以在 Python Shell 中使用此 SDK,借助 uv 和随附的 uvx 命令,如下所示:

uvx --from mistralai python

也可以编写独立的 Python 脚本,而无需设置整个项目,如下所示:

#!/usr/bin/env -S uv run --script
# /// script
# requires-python = ">=3.10"
# dependencies = [
#     "mistralai",
# ]
# ///

from mistralai.client import Mistral

sdk = Mistral(
  # SDK 参数
)

# 脚本其余部分...

保存到文件后,您可以使用 uv run script.py 来运行脚本,其中 script.py 可以替换为实际的文件名。

代理额外依赖项

当使用与代理相关的功能时,需要添加 agents 额外依赖项。这可以在安装软件包时一并添加:

pip install "mistralai[agents]"

注意:这些功能需要 Python 3.10 或更高版本(SDK 的最低要求)。

其他软件包

其他 mistralai-* 软件包(例如 mistralai-workflows)可以单独安装,并且属于 mistralai 命名空间:

pip install mistralai-workflows

SDK 示例用法

创建聊天完成

此示例展示了如何创建聊天完成。

# 同步示例
from mistralai.client import Mistral
import os


with Mistral(
    api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:

    res = mistral.chat.complete(model="mistral-large-latest", messages=[
        {
            "role": "user",
            "content": "谁是法国最伟大的画家?用一句话回答。",
        },
    ], stream=False, response_format={
        "type": "text",
    })

    # 处理响应
    print(res)

同样的 SDK 客户端也可以通过导入 asyncio 来发出异步请求。

# 异步示例
import asyncio
from mistralai.client import Mistral
import os

async def main():

    async with Mistral(
        api_key=os.getenv("MISTRAL_API_KEY", ""),
    ) as mistral:

        res = await mistral.chat.complete_async(model="mistral-large-latest", messages=[
            {
                "role": "user",
                "content": "谁是法国最伟大的画家?用一句话回答。",
            },
        ], stream=False, response_format={
            "type": "text",
        })

        # 处理响应
        print(res)

asyncio.run(main())

上传文件

此示例展示了如何上传文件。

# 同步示例
from mistralai.client import Mistral
import os


with Mistral(
    api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:

    res = mistral.files.upload(file={
        "file_name": "example.file",
        "content": open("example.file", "rb"),
    }, visibility="workspace")

    # 处理响应
    print(res)

同样的 SDK 客户端也可以通过导入 asyncio 发出异步请求。

# 异步示例
import asyncio
from mistralai.client import Mistral
import os

async def main():

    async with Mistral(
        api_key=os.getenv("MISTRAL_API_KEY", ""),
    ) as mistral:

        res = await mistral.files.upload_async(file={
            "file_name": "example.file",
            "content": open("example.file", "rb"),
        }, visibility="workspace")

        # 处理响应
        print(res)

asyncio.run(main())

创建代理完成

此示例展示了如何创建代理完成。

# 同步示例
from mistralai.client import Mistral
import os


with Mistral(
    api_key=os.getenv("MISTRAL_API_KEY", ""),Diaspora: A Social Network for the People
By: Noura Al-Mutairi
Introduction
In today's digital age, social media platforms have become an integral part of our daily lives. They offer us a way to connect with friends and family, share our thoughts and experiences, and stay updated on current events. However, despite their popularity, many people are becoming increasingly concerned about privacy issues, data security, and the lack of transparency in how these platforms operate. This has led to the rise of alternative social networks that prioritize user privacy and control. One such platform is Diaspora, which was created by four students at New York University in 2010. In this essay, I will explore what makes Diaspora unique, its benefits and challenges, and why it might be a better choice for those who value their online privacy.
What is Diaspora?
Diaspora is an open-source social networking platform that allows users to create their own independent servers, known as "pods," where they can host their personal data and interact with others. Unlike traditional social media platforms like Facebook or Twitter, which store all user data on centralized servers owned by the company, Diaspora gives users full control over their data and how it is shared. Each pod can be customized to meet the specific needs of its users, and pods can communicate with each other through a decentralized network called the "federation." This means that users can join any pod they choose, regardless of where it is located, and still maintain a seamless connection with other pods around the world.
Benefits of Diaspora
One of the main advantages of Diaspora is its emphasis on privacy and user control. By allowing users to host their own data on independent servers, Diaspora eliminates the risk of data breaches and unauthorized access that often occur on centralized platforms. Additionally, since users have full control over their data, they can decide who can see their posts, photos, and personal information, and how much of it they want to share with others. This level of control is particularly important for individuals who are concerned about their online safety and want to protect their personal information from prying eyes.
Another benefit of Diaspora is its flexibility and customization options. With thousands of pods available to choose from, users can find one that suits their preferences and needs. Whether they want a pod that focuses on art and culture, technology and innovation, or community building and activism, there is always a pod that matches their interests. Moreover, users can also create their own pods if none of the existing ones meet their requirements. This level of freedom and creativity is rare in traditional social media platforms, where users are often limited to the features and settings provided by the company.
Challenges of Diaspora
Despite its many benefits, Diaspora also faces some challenges that may hinder its growth and adoption. One of the main challenges is its lack of popularity and awareness among the general public. Since Diaspora is still a relatively new platform compared to Facebook or Twitter, many people are not familiar with its features and benefits. As a result, it is difficult for Diaspora to attract a large number of users and compete with established players in the market. Another challenge is its technical complexity and learning curve. Unlike traditional social media platforms, which are designed to be easy to use and intuitive, Diaspora requires some technical knowledge and skills to set up and manage a pod. This may discourage some users who are not comfortable with technology or do not have access to reliable internet connections.
Conclusion
In conclusion, Diaspora is a unique and promising social networking platform that offers a refreshing alternative to traditional social media platforms. By giving users full control over their data and interactions, Diaspora empowers them to take charge of their online presence and express themselves freely without fear of censorship or surveillance. Moreover, Diaspora's decentralized nature and flexible structure make it a perfect fit for diverse communities and groups that seek to build strong bonds and promote mutual understanding. However, in order for Diaspora to reach its full potential, more efforts are needed to increase its visibility and accessibility among the general public. Only then can Diaspora become a viable option for those who value their online privacy and want to reclaim their digital sovereignty.

# 同步示例
from mistralai.client import Mistral
import os


with Mistral(
    api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:

    res = mistral.agents.complete(messages=[
        {
            "role": "user",
            "content": "谁是法国最伟大的画家?用一句话简短回答。",
        },
    ], agent_id="<id>", stream=False, response_format={
        "type": "text",
    })

    # 处理响应
    print(res)

同样的 SDK 客户端也可以通过导入 asyncio 来进行异步请求。

# 异步示例
import asyncio
from mistralai.client import Mistral
import os

async def main():

    async with Mistral(
        api_key=os.getenv("MISTRAL_API_KEY", ""),
    ) as mistral:

        res = await mistral.agents.complete_async(messages=[
            {
                "role": "user",
                "content": "谁是法国最伟大的画家?用一句话简短回答。",
            },
        ], agent_id="<id>", stream=False, response_format={
            "type": "text",
        })

        # 处理响应
        print(res)

asyncio.run(main())

创建嵌入请求

本示例展示了如何创建嵌入请求。

# 同步示例
from mistralai.client import Mistral
import os


with Mistral(
    api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:

    res = mistral.embeddings.create(model="mistral-embed", inputs=[
        "对这句话进行嵌入。",
        "也对这句话进行嵌入。",
    ])

    # 处理响应
    print(res)

同样的 SDK 客户端也可以通过导入 asyncio 来进行异步请求。

# 异步示例
import asyncio
from mistralai.client import Mistral
import os

async def main():

    async with Mistral(
        api_key=os.getenv("MISTRAL_API_KEY", ""),
    ) as mistral:

        res = await mistral.embeddings.create_async(model="mistral-embed", inputs=[
            "对这句话进行嵌入。",
            "也对这句话进行嵌入。",
        ])

        # 处理响应
        print(res)

asyncio.run(main())

更多示例

您可以使用 uv runexamples/ 目录中运行这些示例。

各云服务商 SDK 示例用法

Azure AI

先决条件

在开始之前,请确保您已准备好 AZURE_ENDPOINTAZURE_API_KEY。要获取这些信息,您需要在 Azure AI 上部署 Mistral 模型。 有关在 Azure AI 上部署 Mistral 的说明,请参阅此处

步骤 1:安装

pip install mistralai

步骤 2:示例用法

以下是一个基本示例,帮助您入门。您也可以运行 examples 目录中的示例

import os
from mistralai.azure.client import MistralAzure

# SDK 会自动将 api-version 作为查询参数注入
client = MistralAzure(
    api_key=os.environ["AZURE_API_KEY"],
    server_url=os.environ["AZURE_ENDPOINT"],
    api_version="2024-05-01-preview",  # 可选,默认值为该版本
)

res = client.chat.complete(
    model=os.environ["AZURE_MODEL"],
    messages=[
        {
            "role": "user",
            "content": "你好!",
        }
    ],
)
print(res.choices[0].message.content)

Google Cloud

先决条件

在开始之前,您需要创建一个 Google Cloud 项目并启用 Mistral API。为此,请按照此处的说明操作。 要在本地运行此示例,您还需要确保已通过 Google Cloud 进行身份验证。您可以通过运行以下命令来完成:

gcloud auth application-default login

步骤 1:安装

pip install mistralai
# 如果需要 GCP 身份验证支持(必需):
pip install "mistralai[gcp]"

步骤 2:示例用法

以下是一个基本示例,帮助您入门。您也可以运行 examples 目录中的示例

SDK 自动执行以下操作:

  • 通过 google.auth.default() 检测凭据
  • 在令牌过期时自动刷新
  • 根据 project_idregion 构建 Vertex AI 的 URL
import os
from mistralai.gcp.client import MistralGCP

# SDK 会自动检测凭据并构建 Vertex AI 的 URL
client = MistralGCP(
    project_id=os.environ.get("GCP_PROJECT_ID"),  # 可选:从凭据中自动检测
    region="us-central1",  # 默认值:europe-west4
)

res = client.chat.complete(
    model="mistral-small-2503",
    messages=[
        {
            "role": "user",
            "content": "你好!",
        }
    ],
)
print(res.choices[0].message.content)

可用资源与操作

可用方法

Agents

Audio.Speech

Audio.Transcriptions

Audio.Voices

Batch.Jobs

  • list - 获取批量作业
  • create - 创建批量作业
  • get - 获取批量作业
  • delete - 删除批量作业
  • cancel - 取消批量作业

Beta.Agents

Beta.Connectors

  • create - 创建一个新的连接器。
  • list - 列出所有连接器。
  • get_auth_url - 获取连接器的授权 URL。
  • call_tool - 调用连接器工具。
  • list_tools - 列出连接器的工具。
  • get - 获取一个连接器。
  • update - 更新一个连接器。
  • delete - 删除一个连接器。

Beta.Conversations

  • start - 创建一个会话并为其添加条目。
  • list - 列出所有已创建的会话。
  • get - 获取会话信息。
  • delete - 删除一个会话。
  • append - 向现有会话添加新条目。
  • get_history - 获取会话中的所有条目。
  • get_messages - 获取会话中的所有消息。
  • restart - 从指定条目重新开始一个会话。
  • start_stream - 创建一个会话并为其添加条目。
  • append_stream - 向现有会话添加新条目。
  • restart_stream - 从指定条目重新开始一个会话。

Beta.Libraries

  • list - 列出您有权访问的所有库。
  • create - 创建一个新的库。
  • get - 获取特定库的详细信息。
  • delete - 删除一个库及其所有文档。
  • update - 更新一个库。

Beta.Libraries.Accesses

  • list - 列出对该库的所有访问权限。
  • update_or_create - 创建或更新访问级别。
  • delete - 删除一个访问级别。

Beta.Libraries.Documents

Beta.Observability.Campaigns

  • create - 创建并启动一个新的活动。
  • list - 获取所有活动。
  • fetch - 根据 ID 获取活动。
  • delete - 删除一个活动。
  • fetch_status - 根据活动 ID 获取活动状态。
  • list_events - 获取由给定活动选择的事件 ID。

Beta.Observability.ChatCompletionEvents

  • search - 获取聊天完成事件。
  • search_ids - 作为 /search 的替代方案,仅返回 ID,并且可以一次性返回大量 ID。
  • fetch - 获取聊天完成事件。
  • fetch_similar_events - 获取相似的聊天完成事件。
  • judge - 根据给定选项对事件进行评判。

Beta.Observability.ChatCompletionEvents.Fields

Beta.可观测性.数据集

Beta.可观测性.数据集.记录

  • fetch - 从数据集中获取指定对话的内容
  • delete - 从数据集中删除一条记录
  • bulk_delete - 从数据集中批量删除多条记录
  • judge - 根据给定选项对数据集中的记录运行Judge
  • update_payload - 更新数据集记录的对话负载
  • update_properties - 更新对话属性

Beta.可观测性.Judge

聊天

分类器

嵌入

事件

文件

Fim

微调作业

  • list - 获取微调作业
  • create - 创建微调作业
  • get - 获取微调作业
  • cancel - 取消微调作业
  • start - 开始微调作业

模型

OCR

工作流

工作流.部署

工作流.事件

工作流.执行

工作流.指标

工作流.运行

工作流.计划

服务器发送事件流

服务器发送事件 用于从某些操作中流式传输内容。这些操作会将流暴露为 生成器, 可以使用简单的 for 循环来消费。当服务器不再有事件可发送并关闭底层连接时,循环将终止。

该流也是一个 上下文管理器, 可以与 with 语句一起使用,并在退出上下文时自动关闭底层连接。

from mistralai.client import Mistral
import os


with Mistral(
    api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:

    res = mistral.audio.speech.complete(input="<value>", stream=False, additional_properties={

    })

    with res as event_stream:
        for event in event_stream:
            # 处理事件
            print(event, flush=True)

分页

此 SDK 中的一些端点支持分页。要使用分页,您可以像往常一样调用 SDK 方法,但返回的响应对象将具有一个 Next 方法,可以调用该方法来获取下一批结果。如果 Next 的返回值为 None, 则表示没有更多页面可供获取。

以下是一个此类分页调用的示例:

from mistralai.client import Mistral
import os


with Mistral(
    api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:

    res = mistral.workflows.get_workflows(active_only=False, include_shared=True, limit=50)

    while res is not None:
        # 处理项目

        res = res.next()

文件上传

某些 SDK 方法接受文件对象作为请求体或多部分请求的一部分。通常建议以流的形式上传文件,而不是将整个文件内容读入内存。这样做可以避免过度消耗内存,并防止在处理非常大的文件时出现内存不足错误。下面的示例展示了如何将文件流附加到请求中。

[!提示]

对于处理文件上传的端点,也可以使用字节数组。然而,对于大文件,建议使用流。

from mistralai.client import Mistral
import os


with Mistral(
    api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:

    res = mistral.audio.transcriptions.complete(model="Model X", diarize=False)

    # 处理响应
    print(res)

重试

本 SDK 中的部分端点支持重试。如果您在未进行任何配置的情况下使用该 SDK,它将回退到 API 提供的默认重试策略。不过,您可以在单个操作级别或在整个 SDK 范围内覆盖默认重试策略。

要为单个 API 调用更改默认重试策略,只需向调用提供一个 RetryConfig 对象:

from mistralai.client import Mistral
from mistralai.client.utils import BackoffStrategy、RetryConfig
import os


with Mistral(
    api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:

    res = mistral.audio.speech.complete(input="<value>", stream=False, additional_properties={

    },
        RetryConfig("backoff", BackoffStrategy(1, 50, 1.1, 100), False))

    with res as event_stream:
        for event in event_stream:
            # 处理事件
            print(event, flush=True)

如果您希望覆盖所有支持重试的操作的默认重试策略,可以在初始化 SDK 时使用 retry_config 可选参数:

from mistralai.client import Mistral
from mistralai.client.utils import BackoffStrategy、RetryConfig
import os


with Mistral(
    retry_config=RetryConfig("backoff", BackoffStrategy(1, 50, 1.1, 100), False),
    api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:

    res = mistral.audio.speech.complete(input="<value>", stream=False, additional_properties={

    })

    with res as event_stream:
        for event in event_stream:
            # 处理事件
            print(event, flush=True)

错误处理

MistralError 是所有 HTTP 错误响应的基类。它具有以下属性:

属性 类型 描述
err.message str 错误消息
err.status_code int HTTP 响应的状态码,例如 404
err.headers httpx.Headers HTTP 响应头
err.body str HTTP 正文。如果没有返回正文,则可能为空字符串。
err.raw_response httpx.Response 原始 HTTP 响应
err.data 可选。某些错误可能包含结构化数据。请参阅错误类

示例

from mistralai.client import Mistral、errors
import os


with Mistral(
    api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:
    res = None
    try:

        res = mistral.audio.speech.complete(input="<value>", stream=False, additional_properties={

        })

        with res as event_stream:
            for event in event_stream:
                # 处理事件
                print(event, flush=True)


    except errors.MistralError as e:
        # HTTP 错误响应的基类
        print(e.message)
        print(e.status_code)
        print(e.body)
        print(e.headers)
        print(e.raw_response)

        # 根据方法的不同,可能会抛出不同的错误
        if isinstance(e, errors.HTTPValidationError):
            print(e.data.detail)  # Optional[List[models.ValidationError]]

错误类

主要错误:

较常见的错误(7 种)

网络错误:

继承自 MistralError

  • HTTPValidationError:验证错误。状态码为 422。适用于 168 种方法中的 103 种。*
  • ObservabilityError:错误请求——请求参数或数据无效。适用于 168 种方法中的 41 种。*
  • ResponseValidationError:响应数据与预期的 Pydantic 模型类型不匹配。可通过 cause 属性访问 Pydantic 验证错误。

* 请查看 方法文档 以了解错误是否适用。

服务器选择

按名称选择服务器

您可以通过在初始化 SDK 客户端实例时将服务器名称传递给 server: str 可选参数,来全局覆盖默认服务器。所选服务器随后将作为使用它的操作的默认服务器。下表列出了与可用服务器关联的名称:

名称 服务器 描述
eu https://api.mistral.ai 欧盟生产服务器

示例

from mistralai.client import Mistral
import os


with Mistral(
    server="eu",
    api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:

    res = mistral.audio.speech.complete(input="<value>", stream=False, additional_properties={

    })

    with res as event_stream:
        for event in event_stream:
            # 处理事件
            print(event, flush=True)

按客户端覆盖服务器 URL

默认服务器也可以通过在初始化 SDK 客户端实例时将 URL 传递给 server_url: str 可选参数来全局覆盖。例如:

from mistralai.client import Mistral
import os


with Mistral(
    server_url="https://api.mistral.ai",
    api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:

    res = mistral.audio.speech.complete(input="<value>", stream=False, additional_properties={

    })

    with res as event_stream:
        for event in event_stream:
            # 处理事件
            print(event, flush=True)

自定义 HTTP 客户端

Python SDK 使用 httpx HTTP 库进行 API 调用。为了提供一种便捷的方式来配置超时、Cookie、代理、自定义头部以及其他底层配置,您可以使用自己的 HTTP 客户端实例来初始化 SDK 客户端。 根据您使用的是同步版还是异步版 SDK,您可以分别传入 HttpClientAsyncHttpClient 的实例,它们是 Protocol 的实现,确保客户端具备执行 API 调用所需的方法。 这使您能够将客户端封装在自己的自定义逻辑中,例如添加自定义头部、日志记录或错误处理;或者您也可以直接传入 httpx.Clienthttpx.AsyncClient 的实例。

例如,您可以为该 SDK 发出的每个请求指定一个头部,如下所示:

from mistralai.client import Mistral
import httpx

http_client = httpx.Client(headers={"x-custom-header": "someValue"})
s = Mistral(client=http_client)

或者,您可以将客户端封装在自己的自定义逻辑中:

from mistralai.client import Mistral
from mistralai.client.httpclient import AsyncHttpClient
import httpx

class CustomClient(AsyncHttpClient):
    client: AsyncHttpClient

    def __init__(self, client: AsyncHttpClient):
        self.client = client

    async def send(
        self,
        request: httpx.Request,
        *,
        stream: bool = False,
        auth: Union[
            httpx._types.AuthTypes, httpx._client.UseClientDefault, None
        ] = httpx.USE_CLIENT_DEFAULT,
        follow_redirects: Union[
            bool, httpx._client.UseClientDefault
        ] = httpx.USE_CLIENT_DEFAULT,
    ) -> httpx.Response:
        request.headers["Client-Level-Header"] = "added by client"

        return await self.client.send(
            request, stream=stream, auth=auth, follow_redirects=follow_redirects
        )

    def build_request(
        self,
        method: str,
        url: httpx._types.URLTypes,
        *,
        content: Optional[httpx._types.RequestContent] = None,
        data: Optional[httpx._types.RequestData] = None,
        files: Optional[httpx._types.RequestFiles] = None,
        json: Optional[Any] = None,
        params: Optional[httpx._types.QueryParamTypes] = None,
        headers: Optional[httpx._types.HeaderTypes] = None,
        cookies: Optional[httpx._types.CookieTypes] = None,
        timeout: Union[
            httpx._types.TimeoutTypes, httpx._client.UseClientDefault
        ] = httpx.USE_CLIENT_DEFAULT,
        extensions: Optional[httpx._types.RequestExtensions] = None,
    ) -> httpx.Request:
        return self.client.build_request(
            method,
            url,
            content=content,
            data=data,
            files=files,
            json=json,
            params=params,
            headers=headers,
            cookies=cookies,
            timeout=timeout,
            extensions=extensions,
        )

s = Mistral(async_client=CustomClient(httpx.AsyncClient()))

认证

每客户端安全方案

该 SDK 全局支持以下安全方案:

名称 类型 方案 环境变量
api_key HTTP HTTP Bearer MISTRAL_API_KEY

要通过 API 进行认证,在初始化 SDK 客户端实例时必须设置 api_key 参数。例如:

from mistralai.client import Mistral
import os


with Mistral(
    api_key=os.getenv("MISTRAL_API_KEY", ""),
) as mistral:

    res = mistral.audio.speech.complete(input="<value>", stream=False, additional_properties={

    })

    with res as event_stream:
        for event in event_stream:
            # 处理事件
            print(event, flush=True)

资源管理

Mistral 类实现了上下文管理协议,并注册了一个终结器函数,用于关闭其内部使用的同步和异步 HTTPX 客户端。这将关闭 HTTP 连接,释放内存,并释放 SDK 占用的其他资源。对于仅执行少量 SDK 方法调用的短生命周期 Python 程序和笔记本而言,资源管理可能不是主要关注点。然而,在长期运行的程序中,通过 上下文管理器 创建单个 SDK 实例并在整个应用程序中重复使用它会更有益。

from mistralai.client import Mistral
import os
def main():

    with Mistral(
        api_key=os.getenv("MISTRAL_API_KEY", ""),
    ) as mistral:
        # 应用程序的其余部分在这里...


# 或者在使用异步时:
async def amain():

    async with Mistral(
        api_key=os.getenv("MISTRAL_API_KEY", ""),
    ) as mistral:
        # 应用程序的其余部分在这里...

调试

您可以配置 SDK 以输出 SDK 请求和响应的调试日志。

您可以直接将自己的日志记录器类传递给 SDK。

from mistralai.client import Mistral
import logging

logging.basicConfig(level=logging.DEBUG)
s = Mistral(debug_logger=logging.getLogger("mistralai.client"))

您还可以通过将环境变量 MISTRAL_DEBUG 设置为 true 来启用默认的调试日志记录器。

IDE 支持

PyCharm

通常,SDK 可以很好地与大多数 IDE 无缝配合。然而,在使用 PyCharm 时,通过安装一个额外的插件,您可以享受与 Pydantic 更好的集成。

开发

贡献

虽然我们重视对本 SDK 的开源贡献,但此库是由程序自动生成的。任何手动添加到内部文件的更改都将在下一次生成时被覆盖。 我们期待您的反馈。欢迎随时提交 PR 或包含概念验证的议题,我们将尽力将其纳入未来的版本中。

版本历史

v2.4.0rc22026/04/14
v2.4.0rc12026/04/14
v2.3.22026/04/10
v2.3.12026/04/07
v2.3.02026/04/03
v2.2.02026/03/31
v2.2.0rc32026/03/30
v2.2.0rc22026/03/30
v2.2.0rc12026/03/30
v2.1.32026/03/23
v2.1.22026/03/20
v2.1.12026/03/20
v2.1.02026/03/20
v2.0.52026/03/18
v2.0.42026/03/16
v2.0.32026/03/16
v2.0.22026/03/13
v2.0.12026/03/12
v2.0.02026/03/10
v2.0.0rc12026/03/02

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|1周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

158.1k|★★☆☆☆|今天
开发框架Agent语言模型

opencode

OpenCode 是一款开源的 AI 编程助手(Coding Agent),旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件,而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码,还是排查难以定位的 Bug,OpenCode 都能通过自然语言交互高效完成,显著减少开发者在重复性劳动和上下文切换上的时间消耗。 这款工具专为软件开发者、工程师及技术研究人员设计,特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构,这意味着用户可以审查代码逻辑、自定义行为策略,甚至私有化部署以保障数据安全,彻底打破了传统闭源 AI 助手的“黑盒”限制。 在技术体验上,OpenCode 提供了灵活的终端界面(Terminal UI)和正在测试中的桌面应用程序,支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具,安装便捷,并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客,还是渴望提升产出的独立开发者,OpenCode 都提供了一个透明、可信

144.3k|★☆☆☆☆|今天
Agent插件

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.3k|★★☆☆☆|6天前
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|1周前
插件Agent图像