トラブルシューティング
このセクションでは、トラブルシューティングのためのツールを説明し、一般的なエラーに対処します。
一般的な ロギング 機能は、埋め込み関数呼び出しにも適用されます。
ツールの呼び出しは、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関数には、関数呼び出しのデバッグや入力および出力の統計のために役立つログを出力する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エラーが発生した場合、入力がモデルの現在のコンテキストウィンドウを超えている可能性があります。このエラーを解決するために、入力トークンを減らしてみてください。