コンテンツにスキップ

カスタムメタデータ

AI Gatewayのカスタムメタデータを使用すると、リクエストにユーザーIDやその他の識別子をタグ付けでき、リクエストの追跡と分析が向上します。メタデータの値は文字列、数値、またはブール値であり、ログに表示されるため、データの検索やフィルタリングが容易になります。

主な機能

  • カスタムタグ付け: ユーザーID、チーム名、テストインジケーター、その他の関連情報をリクエストに追加します。
  • 強化されたログ記録: メタデータがログに表示され、詳細な検査やトラブルシューティングが可能です。
  • 検索とフィルタリング: メタデータを使用して、ログに記録されたリクエストを効率的に検索およびフィルタリングします。

サポートされているメタデータタイプ

  • 文字列
  • 数値
  • ブール値

実装例

cURLを使用する

cURLを使用してリクエストにカスタムメタデータを含めるには:

Terminal window
curl https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/openai/chat/completions \
--header 'Authorization: Bearer {api_token}' \
--header 'Content-Type: application/json' \
--header 'cf-aig-metadata: {"team": "AI", "user": 12345, "test":true}' \
--data '{"model": "gpt-4o", "messages": [{"role": "user", "content": "What should I eat for lunch?"}]}'

SDKを使用する

OpenAI SDKを使用してリクエストにカスタムメタデータを含めるには:

import OpenAI from "openai";
export default {
async fetch(request, env, ctx) {
const openai = new OpenAI({
apiKey: env.OPENAI_API_KEY,
baseURL: "https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/openai",
});
try {
const chatCompletion = await openai.chat.completions.create(
{
model: "gpt-4o",
messages: [{ role: "user", content: "What should I eat for lunch?" }],
max_tokens: 50,
},
{
headers: {
"cf-aig-metadata": JSON.stringify({
user: "JaneDoe",
team: 12345,
test: true
}),
},
}
);
const response = chatCompletion.choices[0].message;
return new Response(JSON.stringify(response));
} catch (e) {
console.log(e);
return new Response(e);
}
},
};

バインディングを使用する

Bindingsを使用してリクエストにカスタムメタデータを含めるには:

export default {
async fetch(request, env, ctx) {
const aiResp = await env.AI.run(
'@cf/mistral/mistral-7b-instruct-v0.1',
{ prompt: 'What should I eat for lunch?' },
{ gateway: { id: 'gateway_id', metadata: { "team": "AI", "user": 12345, "test": true} } }
);
return new Response(aiResp);
},
};