← Cloudflare Workers AI / workers-ai / features / function-calling / embedded
Řešení potíží
Tato část popisuje nástroje pro řešení problémů a časté chyby.
Protokolování
Obecné protokolování možnosti pro Workers platí i pro vestavěné volání funkcí.
Vyvolání funkcí
Volání nástrojů lze logovat stejně jako u jakéhokoli jiného Workeru pomocí 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());
};
...
}
}Protokolování v rámci runWithTools
runWithTools funkce má verbose režim, který generuje užitečné logy pro ladění volání funkcí i statistiky vstupů a výstupů.
const response = await runWithTools(
env.AI,
'@hf/nousresearch/hermes-2-pro-mistral-7b',
{
messages: [
...
],
tools: [
...
],
},
// Enable verbose mode
{ verbose: true }
);Výkon
Aby bylo možné odpovědět na prompt LLM pomocí embedded function, může být zapotřebí více inferenčních požadavků AI a vyvolání funkcí, což může ovlivnit dojem uživatele.
Pro zlepšení výkonu zvažte následující:
- Zkraťte prompty (a snižte tak dobu zpracování vstupu)
- Omezte počet poskytovaných nástrojů
- Streamujte koncovému uživateli finální odpověď (a minimalizujte tak dobu do první interakce). Příklad najdete níže:
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',
},
});
}Časté chyby
Pokud se vám zobrazuje BadInput chyba, vaše vstupy mohou přesahovat aktuální kontextové okno našich modelů. Zkuste snížit počet vstupních tokenů, aby chyba zmizela.