跳至主要内容

Codestral API 教程:Mistral API 入门指南

要连接到 Codestral API,请从 Mistral AI 获取您的 API 密钥,并向相应的端点(codestral.mistral.ai 或 api.mistral.ai)发送授权的 HTTP 请求。
· 9分钟 阅读

使用 AI 探索

Codestral 是一款最先进的生成式模型,专为代码生成任务优化,包括中间填充(FIM)和代码补全。它在 80 多种编程语言上接受过训练,既擅长常见语言,也能应对较少使用的语言,是开发者的多面手工具。

借助 Codestral API,我们可以将代码生成自动化并集成到工作流中。本文将提供使用 Codestral API 的分步指南。

如果您想先了解 Codestral 的概况,请查看我的文章:什么是 Mistral 的 Codestral。

Codestral API 端点

Codestral 提供两个主要 API 端点,以满足不同用户需求:

  • codestral.mistral.ai:适合个人用户和小规模集成。该端点目前在 2024 年 8 月 1 日之前免费,之后将改为按月订阅服务。
  • api.mistral.ai:面向企业和高需求场景,提供更高的速率限制,并为大规模应用提供强有力的支持。

如果您打算在 IDE 插件中使用 Codestral,或计划构建直接向用户暴露端点、让用户自备 API 密钥的工具,Mistral 推荐使用 codestral.mistral.ai 端点。

出于更高的速率限制以及更适合商业应用的考虑,其他用例推荐使用 api.mistral.ai 端点。

在本教程中,我们将使用 codestral.mistral.ai 端点来展示 Codestral 的能力。

Codestral API 入门

获取 API 密钥

使用 Codestral API,您需要注册 Mistral AI 账号并获取 API 密钥。请按以下步骤操作:

步骤 1:注册

访问 Mistral AI 注册页面并创建账号。

步骤 2:获取 API 密钥

对于 api.mistral.ai,前往 API Keys 选项卡,点击Create new key生成您的 API 密钥。

对于 codestral.mistral.ai:进入 Codestral 选项卡(在 API Keys 选项卡下方带有“New”标记的那个),并按照页面上的说明获取您的 API 密钥。请注意,目前存在候补名单,注册需要提供电话号码。通过审核后,您即可在同一页面访问到您的 API 密钥以及两个 codestral.mistral.ai 专用端点,如下图所示:

本文使用 codestral.mistral.ai 端点来展示 Codestral,因此所有示例都会据此编写。

身份验证

为了对我们的 API 请求进行身份验证,我们将使用 requests 库编写两个 Python 函数。这两个函数分别与 Codestral 的两个 API 端点通信,并在请求头中加入获取到的 API 密钥用于认证。如下所示:

  1. call_chat_endpoint — 调用聊天端点 https://codestral.mistral.ai/v1/chat/completions。
  2. call_fim_endpoint — 调用补全端点 https://codestral.mistral.ai/v1/fim/completions。

以下是在 Python 中的实现方式:

import requests
import json

api_key = 'INSERT YOUR API KEY HERE'

def call_chat_endpoint(data, api_key=api_key):
    url = "<https://codestral.mistral.ai/v1/chat/completions>"
    headers = {
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
        "Accept": "application/json"
    }

    response = requests.post(url, headers=headers, data=json.dumps(data))

    if response.status_code == 200:
        return response.json()
    else:
        return f"Error: {response.status_code}, {response.text}"

def call_fim_endpoint(data, api_key=api_key):
    url = "<https://codestral.mistral.ai/v1/fim/completions>"
    headers = {
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
        "Accept": "application/json"
    }

    response = requests.post(url, headers=headers, data=json.dumps(data))

    if response.status_code == 200:
        return response.json()
    else:
        return f"Error: {response.status_code}, {response.text}"

理解 Codestral 的 API 端点

现在我们已经拿到 API 密钥并设置好了认证函数,接下来看看如何使用 Codestral 的两个 API 端点进行代码生成。我们先从中间填充(FIM)端点开始。

中间填充端点

中间填充端点用于生成位于给定起始点(prompt)与可选结束点(suffix)之间的代码。它特别适合需要在较大代码结构中生成特定片段的任务。

API 端点 URL:https://codestral.mistral.ai/v1/fim/completions

参数:

  • prompt:代码的起始部分。
  • suffix(可选):代码的结束部分。
  • stop(可选):用于停止生成的标记序列。

示例:

prompt = "def fibonacci(n: int):"
suffix = "n = int(input('Enter a number: '))\\nprint(fibonacci(n))"
data = {
    "model": "codestral-latest",
    "prompt": prompt,
    "suffix": suffix,
    "temperature": 0
}

response = call_fim_endpoint(data)

Codestral API output.

指令端点

指令端点为模型提供生成代码的指令,适合更开放式的代码生成任务。

API 端点 URL:https://codestral.mistral.ai/v1/chat/completions

参数:

  • prompt:代码生成任务的指令。
  • temperature(可选):控制生成代码的随机性。
  • max_tokens(可选):限制生成代码的长度。

示例:

prompt = "Please write me a function that adds up two numbers"
data = {
    "model": "codestral-latest",
    "messages": [
        {
            "role": "user",
            "content": prompt
        }
    ],
    "temperature": 0
}

response = call_chat_instruct_endpoint(data)

高级 API 用法

速率限制

各端点的速率限制不同:

为确保顺畅运行并避免超出使用限制,管理速率限制至关重要。一种有效策略是实现重试逻辑,即在指定延迟后暂停并重新提交请求——我们可以使用 Python 的 time 库引入延迟。

或者,您也可以跟踪 API 的使用情况,确保保持在允许的范围内。您可以记录已发出的请求数量,并与速率限制进行比较。

错误处理

常见错误码包括:

  • 401 Unauthorized:API 密钥无效或缺少认证。
  • 429 Too Many Requests:超出速率限制。
  • 500 Internal Server Error:Mistral AI 服务器端问题。

对于 401 Unauthorized 错误,请检查 API 密钥并确保其正确包含在请求头中。

对于 429 Too Many Requests 错误,请尝试实现重试逻辑,在延迟后再次发送请求。

重试逻辑同样有助于处理 500 Internal Server Error,以便稍后再次尝试请求。

自定义输出

要控制输出的格式与风格,您可以调整诸如 prompt(更具体或更概括)和 temperature(控制模型的创造性)等参数。

通过对这些参数进行试验,您可以在生成代码的创造性与可预测性之间取得理想平衡。

集成 Codestral API

Codestral 不仅能作为独立 API 使用——我们还可以将其集成到现有的开发工作流中。下面介绍两种主要方式:通过 IDE 与文本编辑器集成,或者创建自定义脚本。

IDE 与文本编辑器

Codestral 可通过插件或扩展无缝集成到主流 IDE 与文本编辑器中。例如,您可以在 VS Code 或 JetBrains 中配合 Continue.dev 设置 Codestral:

  1. 为 VS Code 或 JetBrains 安装 Continue 扩展。
  2. 选择 Mistral API 作为提供方,并选择 Codestral 作为模型。
  3. 点击 Get API Key 获取 Codestral API 密钥。
  4. 点击 Add model,系统将自动填充 config.json。

自定义脚本

您可以构建利用 Codestral API 进行代码生成任务的自定义脚本或应用。下面是一个用于生成测试函数的简单脚本示例:

prompt="""Sure, here is a simple function in Python that adds up two numbers:

def add_two_numbers(num1, num2):
    return num1 + num2

You can use this function like this:
result = add_two_numbers(5, 3)
print(result)  # Outputs: 8

This function takes two arguments, num1 and num2, and returns their sum.\ndef test_add_two_numbers():""" 

suffix="" 

data = { "model": "codestral-latest", "prompt": prompt, "suffix": suffix, "temperature": 0 }

response = call_fim_endpoint(data)

image

使用 Codestral API 的最佳实践

为充分发挥 Codestral 的价值,我们来看看如何高效、负责地使用该 API 的一些最佳实践。

清晰且简洁的提示

使用 Codestral API 时,清晰度至关重要。请确保您的提示或指令定义明确且不含歧义,以获得期望的代码输出。通过提供具体且具备上下文的提示,您可以引导模型生成更契合预期的代码。

迭代式优化

要优化与 Codestral API 的交互,需要进行迭代式的细化过程。尝试不同的参数、提示和输入,以达成理想结果。分析生成的代码输出,并据此调整提示。通过持续打磨方法,您可以逐步提升生成代码的质量与相关性。

负责任地使用

负责任地使用 Codestral API 非常重要。请确保您的使用符合道德与法律规范。避免生成可能具有恶意或有害的代码。遵循安全与合乎伦理的编程最佳实践,尊重他人的隐私与权利。负责任的使用有助于营造积极且可持续的开发环境。

结语

本教程提供了使用 Codestral API 进行代码生成的实用指南。我们探讨了不同的端点、最佳实践以及集成方式。

欢迎您亲自尝试该 API,探索它如何提升您的开发工作流。

想进一步了解 Mistral,请查看这篇 Mistral 7B 教程 以及这份使用 Mistral 大模型的指南。

Ryan Ong

作者

Ryan Ong

Ryan 是一名首席数据科学家,专注于使用大型语言模型构建 AI 应用。他是伦敦帝国理工学院自然语言处理与知识图谱方向的博士候选人,并在该校获得了计算机科学硕士学位。除数据科学之外,他还撰写每周的 Substack 时事通讯 The Limitless Playbook,分享来自全球顶尖思想家的一个可操作理念,并不时撰写关于核心 AI 概念的文章。

主题