このセクションでは、トラブルシューティング用のツールと、よくあるエラーへの対処を説明します。
Workers の一般的な ログ 機能は、embedded function calling でも使えます。
ツールの呼び出しは、通常の Worker と同様に console.log() で記録できます。
export default {
async fetch(request, env, ctx) {
const sum = (args: { a: number; b: number }): Promise<string> => {
const { a, b } = args;
// Logging from within embedded function invocations
console.log(`The sum function has been invoked with the arguments a: ${a} and 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: [
...
],
},
// Enable verbose mode
{ verbose: true }
);埋め込み関数で LLM のプロンプトに応答するには、AI 推論リクエストと関数呼び出しが複数回必要になることがあり、ユーザー体験に影響します。
パフォーマンスを上げるには、次を検討してください。
- プロンプトを短くする(入力処理の時間を減らします)
- 渡すツールの数を減らす
- 最終応答をエンドユーザーへストリーミングする(操作開始までの時間を短くします)。次の例を参照してください。
async fetch(request, env, ctx) {
const response = (await runWithTools(
env.AI,
'@hf/nousresearch/hermes-2-pro-mistral-7b',
{
messages: [
...
],
tools: [
...
],
},
{
// Enable response streaming
streamFinalResponse: true,
}
)) as ReadableStream;
// Set response headers for streaming
return new Response(response, {
headers: {
'content-type': 'text/event-stream',
},
});
}BadInput エラーが出る場合、入力が現行モデルのコンテキストウィンドウを超えていることがあります。入力トークンを減らして、このエラーを解消してください。