メインコンテンツへスキップ
注意事項
  • Qiskit Code Assistant の OpenAI API 互換性はプレビューリリースの状態であり、変更される可能性があります。
  • フィードバックがある場合や開発チームに連絡したい場合は、Qiskit Slack Workspace チャンネル または関連する公開 GitHub リポジトリをご利用ください。

Qiskit Code Assistant - OpenAI API 互換性

Qiskit Code Assistant は OpenAI API 仕様のサブセットとの互換性を提供しており、特に completions API エンドポイント に対応しています。この互換性の目的は、OpenAILiteLLM などのよく知られた AI 関連ライブラリやメソッドを使用して、サードパーティのパッケージが Qiskit Code Assistant にシームレスに接続できるようにすることです。

サポートされている OpenAI API エンドポイント

メソッドパスコメント
GET/v1/models全モデルの一覧を取得
GET/v1/model/{model}モデルの詳細を取得
POST/v1/completionsモデルにプロンプトを送信して補完を実行
備考

モデルの免責事項が承認されていない場合、/v1/completions エンドポイントは 403 エラーで失敗します。モデルの免責事項を確認・承認する方法については、以下をご参照ください。

追加のエンドポイント(OpenAI スキーマの一部ではなく、便宜上提供されています)は以下のとおりです:

メソッドパスコメント
GET/v1/model/{model}/disclaimerモデルの免責事項を取得
POST/v1/model/{model}/disclaimerモデルの免責事項に同意
POST/v1/completions/accept補完を承認または拒否

モデルの免責事項を取得・確認するには、免責事項エンドポイントに GET リクエストを送信します。例:

curl -X 'GET' \
'https://qiskit-code-assistant.quantum.ibm.com/v1/model/mistral-small-3.2-24b-qiskit/disclaimer' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <IBM Quantum Classic API key>'

モデルの免責事項に同意する場合は、免責事項の ID と承認・拒否の情報を指定して、免責事項エンドポイントに POST リクエストを送信します。例:

curl -X 'POST' \
'https://qiskit-code-assistant.quantum.ibm.com/v1/model/mistral-small-3.2-24b-qiskit/disclaimer' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <IBM Quantum Classic API key>' \
-H 'Content-Type: application/json' \
-d '{
"disclaimer": "<DISCLAIMER_ID>",
"accepted": true
}'

使用例

公式 OpenAI Python ライブラリを使用する

OpenAI Python ライブラリは、Python 3.8 以上のアプリケーションから OpenAI REST API(Qiskit Code Assistant が提供するものを含む)への便利なアクセスを提供します。詳細については、OpenAI Python API ライブラリの Readme の インストールセクション をご参照ください。

from openai import OpenAI

# Initialize the client with your API token
client = OpenAI(
api_key="<IBM Quantum Classic API token>",
base_url="https://qiskit-code-assistant.quantum.ibm.com/v1",
)

# Make a request to the completions API
try:
response = client.completions.create(
model="mistral-small-3.2-24b-qiskit",
prompt="#Transpile a random circuit using the Qiskit Transpiler Service",
)

# Print the generated text
print(response.choices[0].text)

except Exception as e:
print(f"An error occurred: {e}")

LiteLLM を使用する

LiteLLM は、OpenAI フォーマットを使用して複数の LLM API(Bedrock、Huggingface、VertexAI、TogetherAI、Azure、OpenAI、Groq など)にアクセスするための便利な Python ライブラリです。詳細については、LiteLLM ドキュメント をご参照ください。

from litellm import completion

response = completion(
model=f"text-completion-openai/mistral-small-3.2-24b-qiskit",
base_url="https://qiskit-code-assistant.quantum.ibm.com/v1",
messages=[
{
"role": "user",
"content": "#Transpile a random circuit using the Qiskit Transpiler Service",
}
],
api_key="<IBM Quantum Classic API key>",
)

completion_response = response.json()
print(completion_response)