INTEGRITY Dokumentace

Ř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():

Protokolování volání nástrojů
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ů.

Zapnutý podrobný režim
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í:

Příklad streamované odpovědi
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.