Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

[firebase_ai]: TemplateChatSession.sendMessage drops auto-executed function call/response turns from history

Cerrado
#18,757 2 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@chiliec ya está trabajando en esto.

Desde el 6/10/2026.

  • #18758 de @chiliec — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Estancado
Stack tecnológico
dart, firebase, flutter
Área
api, backend

Línea de trabajo

Start with lib/src/server_template/template_chat.dart, especially TemplateChatSession.sendMessage, and compare how requestHistory is added in sendMessageStream and the other chat methods. The report includes a reproduction using chat.history; verify that it contains the user message, function call and response turns, and final response. An open linked pull request (#18758) is already addressing this issue.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Needs Attention platform: all platform: web plugin: ai reproduced type: bug
Is there an existing issue for this?
  • I have searched the existing issues.
Which plugins are affected?

Other

Which platforms are affected?

Web

Description

Affected plugin: firebase_ai (not in the dropdown). The code is pure Dart, so other platforms are likely affected too; we have only built for Web.

When TemplateChatSession.sendMessage auto-executes functions (TemplateAutoFunctionDeclaration), only the original message and the final model response are added to history:

// lib/src/server_template/template_chat.dart, sendMessage
if (!shouldAutoExecute) {
  if (response.candidates case [final candidate, ...]) {
    _history.add(message);
    // ...
    _history.add(normalizedContent);
  }
  return response;
}

The intermediate turns collected in requestHistory are discarded: the model's functionCall content and the function responses. On the next sendMessage, the model no longer sees what its tools returned. For example, a createCharacter call that returned a new id is gone from history, so a follow-up call that needs that id has nothing to refer to.

The other three code paths keep the whole exchange with _history.addAll(requestHistory):

  • TemplateChatSession.sendMessageStream
  • ChatSession.sendMessage
  • ChatSession.sendMessageStream

So this looks like an oversight in this one path rather than intended behavior.

Expected: after auto-executed function turns, history contains the user message, each model functionCall turn, each function response turn and the final response, as sendMessageStream does. Likely fix:

_history.addAll(requestHistory);
_history.add(normalizedContent);

Actual: history contains only the user message and the final response.

This is still the code on main as of today. We found it while building function calling on a server prompt template, and worked around it by using sendMessageStream.

Reproducing the issue
  1. Create a server prompt template that declares one function, e.g. getValue, and includes {{history}}.
  2. final chat = FirebaseAI.googleAI().templateGenerativeModel().startChat('<template-id>', inputs: {}, tools: [TemplateTool.functionDeclarations([TemplateAutoFunctionDeclaration(name: 'getValue', parameters: {}, callable: (_) => {'value': 42})])]);
  3. await chat.sendMessage(Content.text('Call getValue and tell me the result.')); The model calls the function and the SDK auto-executes it.
  4. Inspect chat.history: it has 2 entries (user message, final reply). The functionCall and functionResponse turns are missing. Doing the same with sendMessageStream gives 4 entries.
Firebase Core version

4.14.0

Flutter Version

3.44.1

Relevant Log Output
No error is raised; the turns are silently missing from `chat.history`.
Flutter dependencies
Expand Flutter dependencies snippet
firebase_ai: 4.0.0
firebase_core: 4.14.0
Additional context and comments

Related, but already fixed on main in 6eb250f (#18685), not yet released: in 4.0.0, function responses are sent with role function, which the template endpoint rejects with Role 'function' is not supported. Please use a valid role: SYSTEM, SYSTEM_1, USER, ASSISTANT, DEVELOPER, CONTEXT, USER_CONTEXT, MODEL, USER. Mentioned only so it isn't re-reported. A release including that fix would be welcome.

Lenguaje dominante
Dart
Estrellas
9.3k
Forks
4.1k
Merge medio
2 d 7 h
PR fusionados (30 d)
47

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de firebase/flutterfire

Todos los issues de firebase/flutterfire

Issues similares

Más issues de Dart

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.