Codestral API [Mistral AI]

Codestral API [Mistral AI]

Codestral은 선택된 코드 완성 플러그인에서 사용할 수 있지만 직접 쿼리할 수도 있어요. 자세한 내용은 설명서를 참고하세요.

출처: 문서

본문

API 키

# env variable
os.environ['CODESTRAL_API_KEY']

FIM / Completions

공식 Mistral API 문서: https://docs.mistral.ai/api/#operation/createFIMCompletion

샘플 사용법 (No Streaming)

import os
import litellm

os.environ['CODESTRAL_API_KEY']

response = await litellm.atext_completion(
    model="text-completion-codestral/codestral-2405",
    prompt="def is_odd(n): \n return n % 2 == 1 \ndef test_is_odd():",
    suffix="return True",  # optional
    temperature=0,  # optional
    top_p=1,  # optional
    max_tokens=10,  # optional
    min_tokens=10,  # optional
    seed=10,  # optional
    stop=["return"],  # optional
)

예상 응답:

{
  "id": "b41e0df599f94bc1a46ea9fcdbc2aabe",
  "object": "text_completion",
  "created": 1589478378,
  "model": "codestral-latest",
  "choices": [
    {
      "text": "\n assert is_odd(1)\n assert",
      "index": 0,
      "logprobs": null,
      "finish_reason": "length"
    }
  ],
  "usage": {
    "prompt_tokens": 5,
    "completion_tokens": 7,
    "total_tokens": 12
  }
}

샘플 사용법 - 스트리밍

import os
import litellm

os.environ['CODESTRAL_API_KEY']

response = await litellm.atext_completion(
    model="text-completion-codestral/codestral-2405",
    prompt="def is_odd(n): \n return n % 2 == 1 \ndef test_is_odd():",
    suffix="return True",  # optional
    temperature=0,  # optional
    top_p=1,  # optional
    stream=True,
    seed=10,  # optional
    stop=["return"],  # optional
)

async for chunk in response:
    print(chunk)

예상 응답:

{
  "id": "726025d3e2d645d09d475bb0d29e3640",
  "object": "text_completion",
  "created": 1718659669,
  "choices": [
    {
      "text": "This",
      "index": 0,
      "logprobs": null,
      "finish_reason": null
    }
  ],
  "model": "codestral-2405"
}

지원 모델

https://docs.mistral.ai/platform/endpoints 에 나열된 모든 모델이 지원돼요. 모델 목록, 가격, 토큰 창 등을 이곳에서 적극적으로 유지 관리해요.

모델 이름 함수 호출
Codestral Latest completion(model="text-completion-codestral/codestral-latest", messages)
Codestral 2405 completion(model="text-completion-codestral/codestral-2405", messages)

Chat Completions

공식 Mistral API 문서: https://docs.mistral.ai/api/#operation/createChatCompletion

샘플 사용법 (No Streaming)

import os
import litellm

os.environ['CODESTRAL_API_KEY']

response = await litellm.acompletion(
    model="codestral/codestral-latest",
    messages=[
        {
            "role": "user",
            "content": "Hey, how's it going?",
        }
    ],
    temperature=0.0,  # optional
    top_p=1,  # optional
    max_tokens=10,  # optional
    safe_prompt=False,  # optional
    seed=12,  # optional
)

예상 응답:

{
  "id": "chatcmpl-123",
  "object": "chat.completion",
  "created": 1677652288,
  "model": "codestral/codestral-latest",
  "system_fingerprint": null,
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "\n\nHello there, how may I assist you today?"
    },
    "logprobs": null,
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 9,
    "completion_tokens": 12,
    "total_tokens": 21
  }
}

샘플 사용법 - 스트리밍

import os
import litellm

os.environ['CODESTRAL_API_KEY']

response = await litellm.acompletion(
    model="codestral/codestral-latest",
    messages=[
        {
            "role": "user",
            "content": "Hey, how's it going?",
        }
    ],
    stream=True,  # optional
    temperature=0.0,  # optional
    top_p=1,  # optional
    max_tokens=10,  # optional
    safe_prompt=False,  # optional
    seed=12,  # optional
)

async for chunk in response:
    print(chunk)

예상 응답:

{
  "id":"chatcmpl-123",
  "object":"chat.completion.chunk",
  "created":1694268190,
  "model": "codestral/codestral-latest",
  "system_fingerprint": null,
  "choices":[{
    "index":0,
    "delta":{"role":"assistant","content":"gm"},
    "logprobs":null,
    "finish_reason":null
  }]
}

더 알아보기 (Learn more)