コンテンツにスキップ

トラブルシューティング

このセクションでは、トラブルシューティングのためのツールを説明し、一般的なエラーに対処します。

ロギング

一般的な ロギング 機能は、埋め込み関数呼び出しにも適用されます。

関数の呼び出し

ツールの呼び出しは、console.log()を使用して任意のWorkerでログとして記録できます:

ツール呼び出しのロギング
export default {
async fetch(request, env, ctx) {
const sum = (args: { a: number; b: number }): Promise<string> => {
const { a, b } = args;
// 埋め込み関数呼び出し内からのロギング
console.log(`合計関数が引数 a: ${a} と b: ${b} で呼び出されました`)
return Promise.resolve((a + b).toString());
};
...
}
}

runWithTools内でのロギング

runWithTools関数には、関数呼び出しのデバッグや入力および出力の統計のために役立つログを出力するverboseモードがあります。

詳細モードを有効にした例
const response = await runWithTools(
env.AI,
'@hf/nousresearch/hermes-2-pro-mistral-7b',
{
messages: [
...
],
tools: [
...
],
},
// 詳細モードを有効にする
{ verbose: true }
);

パフォーマンス

埋め込み関数でLLMプロンプトに応答するには、複数のAI推論リクエストや関数呼び出しが必要になる可能性があり、これがユーザー体験に影響を与えることがあります。

パフォーマンスを向上させるために、以下を考慮してください:

  • プロンプトを短くする(入力処理の時間を短縮するため)
  • 提供するツールの数を減らす
  • 最終応答をエンドユーザーにストリーミングする(インタラクションまでの時間を最小限に抑えるため)。以下の例を参照してください:
ストリーミング応答の例
async fetch(request, env, ctx) {
const response = (await runWithTools(
env.AI,
'@hf/nousresearch/hermes-2-pro-mistral-7b',
{
messages: [
...
],
tools: [
...
],
},
{
// 応答ストリーミングを有効にする
streamFinalResponse: true,
}
)) as ReadableStream;
// ストリーミング用のレスポンスヘッダーを設定
return new Response(response, {
headers: {
'content-type': 'text/event-stream',
},
});
}

一般的なエラー

BadInputエラーが発生した場合、入力がモデルの現在のコンテキストウィンドウを超えている可能性があります。このエラーを解決するために、入力トークンを減らしてみてください。