firebase / genkit

An open source framework for building AI-powered apps with familiar code-centric patterns. Genkit makes it easy to integrate, test, and deploy sophisticated AI features to Firebase or Google Cloud.
Apache License 2.0
595 stars 73 forks source link

[JS] schema validation error in streaming mode cause reflection API to crash #271

Open pavelgj opened 3 months ago

pavelgj commented 3 months ago

Describe the bug When running the flow (see below) from the Dev UI in streaming mode the genkit start process "crashes". Full error: https://gist.github.com/pavelgj/0ef67bc35d2c4436c7c128462a64b0b9

To Reproduce

const jokeSubjectGenerator = defineTool(
  {
    name: 'jokeSubjectGenerator',
    description: 'can be called to generate a subject for a joke',
  },
  async () => {
    return 'banana';
  }
);

export const toolCaller = defineFlow(
  {
    name: 'toolCaller',
    outputSchema: z.string(),
  },
  async (_, streamingCallback) => {
    if (!streamingCallback) {
      throw new Error('this flow only works in streaming mode');
    }

    const { response, stream } = await generateStream({
      model: gemini15ProPreview,
      config: {
        temperature: 1,
      },
      tools: [jokeSubjectGenerator],
      prompt: `tell me a joke`,
    });

    for await (const chunk of stream()) {
      streamingCallback(chunk);
    }

    return (await response()).text();
  }
);

Expected behavior A clear and concise description of what you expected to happen.

Screenshots image

chrisraygill commented 2 months ago

If this was fixed in Go, do we already know the solution for JS? @pavelgj