Nota do autor: com um exemplo completo de “trocar a coroa por um chapéu vermelho e depois mudar o coração rosa para azul”, explicamos o que precisa ser reenviado a cada rodada de edição com o Nano Banana 2.1: o histórico da conversa, a imagem da rodada anterior e a assinatura de pensamento. Assim, é possível fazer ajustes pontuais sem perder o que já foi feito.
Muitos desenvolvedores se deparam com o mesmo problema na primeira vez que usam o gemini-nano-banana-2.1 para editar imagens: a primeira edição fica ótima, mas, ao tentar ajustar um pequeno detalhe na segunda rodada, a alteração anterior é “sobrescrita” ou o estilo da imagem inteira é recriado. Neste artigo, vamos mostrar como reenviar corretamente os dados em edições com várias rodadas no Nano Banana 2.1, para que você faça duas edições consecutivas sem perder detalhes.
Este não é mais um artigo só de conceitos. Vamos apresentar um caso reproduzível: na primeira rodada, trocamos a coroa na cabeça do personagem por um chapéu vermelho; na segunda, mudamos apenas o coração rosa para azul, preservando o chapéu vermelho. Você verá o código completo das duas requisições e entenderá quais dados precisam ser enviados em cada rodada.
O principal benefício: ao terminar de ler, você entenderá como funcionam as edições com várias rodadas no Nano Banana 2.1, saberá quais são os 3 elementos que precisam ser reenviados em cada requisição e poderá usar o código diretamente para fazer edições pontuais em sequência.

Principais pontos da edição em várias rodadas com Nano Banana 2.1
Vamos começar esclarecendo o conceito. O que se chama de edição “nativa em várias rodadas” do Nano Banana 2.1 é, falando com mais rigor, uma “edição contínua”: cada rodada é uma solicitação de API independente. O modelo só consegue “lembrar” o que foi alterado na rodada anterior porque você inclui todo o contexto novamente na solicitação — não porque o servidor mantenha a sessão salva.
| Ponto | Descrição | Benefício |
|---|---|---|
| Histórico completo da conversa | O campo contents da segunda solicitação deve incluir a instrução do usuário e a resposta do modelo da primeira rodada |
O modelo sabe “o que foi feito antes” e não redesenha tudo do zero |
| Imagem de saída da rodada anterior | A imagem retornada na resposta do modelo deve ser incluída no histórico sem alterações | A segunda rodada continua a partir da versão com o chapéu vermelho, em vez de usar a imagem original |
Assinatura de pensamento (thought signature) |
O campo de assinatura anexado à parte da resposta do modelo precisa ser enviado de volta sem alterações | Mantém o estado interno de raciocínio do modelo e melhora a consistência das edições locais |
| Solicitações sem estado | Até o momento, não foi confirmado que o servidor memorize o contexto automaticamente | O cliente precisa montar o histórico por conta própria para controlar o comportamento |
| Chamadas no formato nativo | Use o formato nativo generateContent do Gemini para estruturar o campo contents |
As partes de assinatura e imagem podem ser enviadas de volta na estrutura original, sem perda de campos |
Por que a edição em várias rodadas do Nano Banana 2.1 “perde detalhes”
O erro mais comum é enviar, na segunda rodada, apenas a frase “mude o coração rosa para azul” junto com a imagem original. Nesse caso, o modelo ainda vê a imagem original com a coroa e, naturalmente, mantém a coroa — o chapéu vermelho da primeira rodada desaparece. Outro erro é enviar apenas a imagem de saída da primeira rodada, sem o histórico. O modelo recebe a versão com o chapéu vermelho, mas não sabe que ele foi “alterado de propósito agora há pouco e precisa ser mantido”. Por isso, pode acabar mudando a cor ou o formato do chapéu ao fazer a segunda edição.
A maneira realmente confiável é enviar de volta a interação completa da primeira rodada como histórico da conversa: o que o usuário disse, qual imagem o modelo retornou e qual assinatura acompanhava a resposta. A documentação oficial do Google descreve da mesma forma as edições de imagem em várias rodadas: o modelo usa a assinatura presente no histórico para dar continuidade ao contexto de raciocínio e, assim, altera apenas a área indicada.
Estrutura da solicitação para edição em várias rodadas com Nano Banana 2.1
O campo contents da segunda solicitação é um array ordenado cronologicamente que deve conter pelo menos três partes: a mensagem user da primeira rodada (imagem original e instrução), a resposta model da primeira rodada (com a imagem de saída e a assinatura) e a nova instrução user da segunda rodada. O ponto principal é reproduzir a parte da resposta model “sem alterações”. Não extraia apenas a imagem em base64 para montá-la de novo, pois o campo de assinatura pode se perder durante a conversão.

Primeiros passos com a edição em várias rodadas do Nano Banana 2.1
A seguir, vamos chamar diretamente o formato nativo generateContent do Gemini usando Python e a biblioteca requests. Não usamos o formato de chat compatível com a OpenAI porque a edição em várias rodadas exige o reenvio da assinatura de pensamento e das partes da imagem. O formato nativo preserva esses campos o máximo possível em sua estrutura original.
Lista de preparação
| Item | Descrição | Observações |
|---|---|---|
| Chave API | Crie uma no console da APIYI | Novos usuários têm uma cota gratuita para testes |
| Nome do modelo | gemini-nano-banana-2.1 |
Consulte a lista de modelos no console |
| Imagem original | Neste exemplo, uma imagem de personagem usando uma coroa e com um coração rosa no peito | PNG ou JPEG |
| Formato da chamada | generateContent nativo do Gemini |
Facilita o reenvio completo da assinatura e da imagem |
| Ambiente de execução | Python 3 + requests |
Não precisa de SDK adicional |
Exemplo simples: na primeira rodada, troque a coroa por um chapéu vermelho
A primeira rodada é uma solicitação comum de edição de imagem: uma mensagem do usuário com a imagem original e a instrução. O mais importante é salvar o conteúdo completo retornado pelo modelo, pois ele será usado na próxima rodada.
import base64, requests
BASE_URL = "https://api.apiyi.com/v1" # Interface unificada da APIYI; consulte a documentação para saber o caminho no formato nativo
API_KEY = "YOUR_API_KEY"
MODEL = "gemini-nano-banana-2.1"
URL = f"{BASE_URL}/models/{MODEL}:generateContent"
HEADERS = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}
img_b64 = base64.b64encode(open("origin.png", "rb").read()).decode()
user1 = {"role": "user", "parts": [
{"inline_data": {"mime_type": "image/png", "data": img_b64}},
{"text": "Troque a coroa na cabeça do personagem por um chapéu vermelho, mantendo todo o resto igual."}]}
resp = requests.post(URL, headers=HEADERS, json={
"contents": [user1],
"generationConfig": {"responseModalities": ["TEXT", "IMAGE"]}}).json()
model1 = resp["candidates"][0]["content"] # Salve o objeto completo, incluindo a imagem e o thoughtSignature
O ponto mais importante está na última linha: model1 recebe diretamente o objeto completo de candidates[0].content, e não apenas os dados da imagem. As partes desse objeto podem incluir texto, imagem e o campo thoughtSignature. Salvando tudo sem alterações, você não corre o risco de deixar nada de fora.
Exemplo completo: na 2ª rodada, mude apenas o coração rosa para azul e mantenha o chapéu vermelho
O ponto principal da segunda rodada é montar contents assim: [user1, model1, user2]. O código completo abaixo inclui as duas chamadas, a verificação da assinatura e o salvamento das imagens. Você pode executá-lo diretamente.
Ver o código completo de edição contínua em duas rodadas com Nano Banana 2.1
import base64
import requests
BASE_URL = "https://api.apiyi.com/v1" # 通过 APIYI 调用,原生格式路径以 docs.apiyi.com 为准
API_KEY = "YOUR_API_KEY"
MODEL = "gemini-nano-banana-2.1"
URL = f"{BASE_URL}/models/{MODEL}:generateContent"
HEADERS = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}
GEN_CONFIG = {"responseModalities": ["TEXT", "IMAGE"]}
def call(contents):
"""发送一次 generateContent 请求,返回 model 回复的完整 content 对象"""
r = requests.post(URL, headers=HEADERS,
json={"contents": contents, "generationConfig": GEN_CONFIG},
timeout=180)
r.raise_for_status()
return r.json()["candidates"][0]["content"]
def save_image(content, path):
"""从 model 回复中取出图片并保存"""
for part in content.get("parts", []):
data = part.get("inlineData") or part.get("inline_data")
if data:
open(path, "wb").write(base64.b64decode(data["data"]))
return True
return False
def has_signature(content):
"""检查回复中是否带有思维签名"""
return any("thoughtSignature" in p or "thought_signature" in p
for p in content.get("parts", []))
# ---------- 第 1 轮:皇冠 → 红帽 ----------
img_b64 = base64.b64encode(open("origin.png", "rb").read()).decode()
user1 = {"role": "user", "parts": [
{"inline_data": {"mime_type": "image/png", "data": img_b64}},
{"text": "把角色头上的皇冠换成一顶红色的帽子,其他内容保持不变。"}]}
model1 = call([user1])
save_image(model1, "round1_red_hat.png")
print("第 1 轮签名存在:", has_signature(model1))
# ---------- 第 2 轮:粉心 → 蓝心,保留红帽 ----------
user2 = {"role": "user", "parts": [
{"text": "在上一张图的基础上,只把胸前的粉色爱心改成蓝色。"
"红色帽子和其他所有细节保持不变。"}]}
# 关键:完整历史 + 原样回传的 model1(含上一轮图片与签名)
history = [user1, model1, user2]
model2 = call(history)
save_image(model2, "round2_blue_heart.png")
print("第 2 轮签名存在:", has_signature(model2))
# 如需第 3 轮,继续追加:history += [model2, user3]
🚀 Comece rápido: recomendamos testar primeiro o código das duas rodadas no APIYI, em apiyi.com, usando os créditos de teste gratuitos. Confirme que o chapéu vermelho continua na imagem da segunda rodada e que apenas a cor do coração mudou. Depois, integre o fluxo ao seu próprio processo.
Dicas para escrever a instrução da segunda rodada
Para que a edição contínua altere “apenas uma parte”, não basta retornar a estrutura correta: a forma de escrever a instrução também faz diferença. Na segunda rodada, recomendamos deixar três pontos claros: qual imagem usar como base, o que alterar e o que deve permanecer igual. Por exemplo, “Com base na imagem anterior, mude apenas o coração rosa para azul e mantenha o chapéu vermelho e os outros detalhes como estão” tende a funcionar muito melhor do que simplesmente dizer “Mude para azul”.
Além disso, não anexe a imagem original novamente na segunda rodada. Ela já está em user1. Se você também a incluir em user2, o modelo pode interpretá-la como uma nova referência e acabar voltando à versão com coroa.
Comparação de três formas de enviar o histórico de edição em várias rodadas no Nano Banana 2.1
Para mostrar por que é essencial incluir os “três elementos”, vamos comparar três formas comuns de fazer isso. A tabela a seguir descreve, de forma qualitativa, o comportamento de cada uma para ajudar você a identificar rapidamente qual delas seu código está usando.

| Forma de envio do histórico | Conteúdo da solicitação na 2ª rodada | Resultado típico | Recomendação |
|---|---|---|---|
| Forma A: reenviar a imagem original | Imagem original + nova instrução | A alteração da primeira rodada se perde e a coroa volta | Não recomendada |
| Forma B: continuar a edição com uma única imagem | Imagem de saída da primeira rodada + nova instrução, sem histórico | O chapéu vermelho é mantido em geral, mas alguns detalhes podem acabar sendo alterados | Pode ser usada em casos simples |
| Forma C: reenviar o histórico completo | user1 + model1 (incluindo imagem e assinatura) + user2 | Só a cor do coração é alterada; o chapéu vermelho e os demais detalhes são preservados | Recomendada ✅ |
Entendendo a comparação
Análise da forma A: a vantagem da forma A é ser a mais simples de implementar: cada rodada é uma solicitação independente. Porém, o modelo não consegue ver o resultado da primeira rodada, então é como se a edição fosse refeita do zero em uma única rodada. Já o envio do histórico completo permite que a segunda rodada continue a edição a partir do resultado da primeira.
Análise da forma B: a forma B economiza no tamanho da solicitação, pois envia apenas uma imagem. Mas, sem o contexto de que “o chapéu vermelho foi alterado intencionalmente”, o modelo também não recebe a assinatura, o que deixa a consistência dos detalhes sem garantia. Para cenários que exigem refinamento contínuo, como layouts de design e imagens principais para e-commerce, a forma C continua sendo a opção mais confiável.
💡 Sugestão: se o seu negócio precisa de mais de duas rodadas consecutivas de edição, recomendamos adotar diretamente a forma C. Você pode executar as três formas com o mesmo código na APIYI apiyi.com e comparar as imagens geradas. A diferença fica bem evidente.
Como escolher entre o Nano Banana 2.1 e outros modelos da mesma série
A série Nano Banana disponível na APIYI tem vários modelos. A edição contínua é um uso mais avançado dos recursos de edição. A tabela abaixo ajuda você a escolher o modelo mais adequado da série.
| Modelo | Perfil | Recomendação para edição contínua | Plataforma disponível |
|---|---|---|---|
| gemini-nano-banana-2.1 | Modelo principal deste artigo, compatível com edição contínua baseada em histórico e assinatura | Recomendamos enviar o histórico pela forma C | APIYI apiyi.com |
| Nano Banana 2 (gemini-3.1-flash-image) | Modelo da mesma série para geração de imagens e edição | Use também o formato nativo para montar o histórico | APIYI apiyi.com |
| Outros modelos Nano Banana | Escolha de acordo com as necessidades de velocidade e qualidade de imagem | Consulte o guia de desenvolvimento da série | APIYI apiyi.com |
Problemas comuns em edições em várias rodadas com o Nano Banana 2.1
Na prática, a maioria dos casos em que algo “se perde” pode ser atribuída a algumas causas recorrentes. A lista abaixo está organizada por frequência; confira cada item durante a investigação.
- Assinatura perdida: depois de converter a resposta do modelo para uma estrutura de dados própria e montá-la novamente, os nomes dos campos podem mudar de maiúsculas e minúsculas ou de nível de aninhamento. Com isso,
thoughtSignaturenão é enviado. Para evitar o problema, salve e envie de volta diretamente o objetocontentoriginal. - Papel incorreto: se a resposta do modelo da primeira rodada for marcada com o papel
user, o modelo poderá interpretar a própria saída como uma nova imagem enviada pelo usuário. A resposta do modelo deve manterrole: model. - Ordem invertida:
contentsprecisa seguir a ordem cronológica: user1, model1, user2, nessa sequência. Não coloque a nova instrução no início. - Formatos misturados: se a primeira rodada usar o formato compatível com OpenAI e a seguinte mudar para o formato nativo, a conversão dos campos no meio do processo poderá descartar a assinatura. Recomendamos usar o formato nativo do Gemini em todo o fluxo de várias rodadas.
- Histórico muito longo: quanto mais rodadas, mais imagens a solicitação carrega, aumentando o tamanho e o tempo de processamento. Em fluxos longos, com mais de duas ou três rodadas, considere usar o resultado atual como uma nova imagem original em um ponto-chave e começar um novo histórico.
🎯 Dica técnica: durante a investigação, você pode começar imprimindo a estrutura de
partsde model1 e confirmar se o campothoughtSignatureestá presente. Depois, confira se o corpo da solicitação da segunda rodada o inclui sem alterações. O centro de documentação da APIYI, em apiyi.com, traz exemplos de montagem no formato nativo do Gemini e de conversas em várias rodadas para ajudar na conferência.
Perguntas frequentes (FAQ)
P1: O que é a edição em várias etapas com o Nano Banana 2.1?
É o processo de fazer alterações sucessivas na mesma imagem usando o gemini-nano-banana-2.1, modificando apenas partes específicas do resultado anterior a cada etapa. Tecnicamente, trata-se de uma “edição contínua”: cada etapa é uma solicitação independente, e o cliente mantém o contexto enviando o histórico completo, a imagem da etapa anterior e a assinatura de pensamento.
P2: Qual é a diferença entre a edição em uma etapa e em várias etapas?
Na edição em uma etapa, basta “imagem original + uma instrução”. Já a edição em várias etapas exige que o modelo entenda as alterações feitas anteriormente e as preserve na etapa seguinte. A edição em uma etapa não precisa de histórico; a edição em várias etapas precisa incluir o histórico e a assinatura. Sem eles, o modelo volta a editar a imagem original.
P3: O servidor lembra automaticamente o contexto da etapa anterior?
Até o momento, não verificamos se o servidor mantém o contexto automaticamente, então não conte com isso. A abordagem mais segura é tratar cada solicitação como independente e manter o array `contents` no cliente. Isso também está de acordo com o método de edição contínua descrito na documentação oficial do Google.
P4: Em quais situações a edição em várias etapas com o Nano Banana 2.1 é útil?
Ela é indicada principalmente para situações como:
– **Ajustes finos em imagens de produtos para e-commerce**: primeiro, trocar o fundo; depois, ajustar apenas a cor do produto, sem alterar a composição
– **Iterações no design de personagens**: primeiro, trocar os acessórios; depois, ajustar detalhes da roupa, mantendo a consistência facial
– **Ajustes em cartazes de marketing**: primeiro, alterar os elementos visuais principais; depois, refinar áreas de cor específicas, sem recriar a imagem inteira
P5: Como testar rapidamente a edição em várias etapas do Nano Banana 2.1 pela API?
Recomendamos seguir estes passos:
1. Acesse APIYI, em apiyi.com, crie uma conta e gere uma chave API
2. Resgate os créditos de teste gratuitos para novos usuários
3. Execute o código completo deste artigo. Use `https://api.apiyi.com/v1` como `base_url`; para o caminho no formato nativo, consulte a documentação
A mesma chave API também permite invocar outros modelos da série Nano Banana, facilitando a comparação dos resultados da edição contínua.
P6: Quais são as limitações da edição em várias etapas com o Nano Banana 2.1?
– **Tamanho da solicitação**: cada etapa adicional inclui mais uma imagem, aumentando o tamanho da solicitação e o tempo de processamento
– **Limites de consistência**: o exemplo deste artigo valida duas etapas consecutivas. Para avaliar a estabilidade em mais etapas, teste com seus próprios materiais
– **Alternativa**: em fluxos longos, você pode usar o resultado atual como uma nova imagem original em etapas importantes e começar um novo histórico
Principais conclusões sobre a edição em várias rodadas com o Nano Banana 2.1
- Na prática, é uma edição contínua: cada rodada é uma solicitação independente, e o contexto é mantido pelo cliente ao enviá-lo de volta
- Os três elementos são indispensáveis: histórico completo da conversa, imagem gerada na rodada anterior e assinatura de pensamento
- Envie o conteúdo de
modelexatamente como foi recebido: salvecandidates[0].contentdiretamente para evitar perder a assinatura - Use o formato nativo: a estrutura
contentsdegenerateContenté a mais adequada para enviar imagens e assinaturas de volta - Deixe claro o que deve ser preservado: na segunda rodada, especifique “o que mudar e o que manter”; isso torna as edições localizadas mais confiáveis
- Não anexe a imagem original novamente: incluí-la na segunda rodada pode fazer o modelo voltar à versão anterior à edição
- Valide sem gastar muito: use os créditos gratuitos da APIYI em apiyi.com para testar duas rodadas antes de colocar em produção
Resumo
Pontos principais da edição em várias rodadas com o Nano Banana 2.1:
- Mecanismo: a chamada edição em várias rodadas é, na verdade, uma edição contínua baseada no envio do contexto pelo cliente. Ainda não foi verificado se o servidor mantém a memória automaticamente, então não dependa disso
- Conteúdo a enviar de volta: a segunda solicitação precisa incluir
user1,model1exatamente como foi recebido (com a imagem e a assinatura de pensamento) euser2 - Dicas práticas: use sempre o formato nativo do Gemini, especifique nas instruções o que deve ser preservado e não anexe a imagem original novamente na nova rodada
Com esses três pontos em mente, é possível reproduzir de forma consistente edições em duas rodadas, como “trocar a coroa por um chapéu vermelho e depois mudar o coração rosa para azul”. A mesma estrutura também pode ser ampliada para mais rodadas.
Para testar os resultados rapidamente, recomendamos usar a APIYI em apiyi.com. A plataforma oferece interfaces compatíveis com OpenAI e no formato nativo do Gemini. Com uma única chave API, você pode acessar a série Nano Banana e outros modelos populares. A cobrança é por uso, o que facilita começar com testes em pequena escala e, depois, integrar a solução à produção.
📚 Referências
- Documentação da API Google Gemini para geração e edição de imagens: explicação oficial sobre edição de imagens em várias etapas
- Link:
ai.google.dev/gemini-api/docs/image-generation -
Descrição: apresenta a estrutura das solicitações de edição de imagens e como fazer edições consecutivas em uma conversa
-
Documentação da API Google Gemini sobre assinaturas de pensamento: explicação do mecanismo de thought signature
- Link:
ai.google.dev/gemini-api/docs/thought-signatures -
Descrição: explica a função das assinaturas e como enviá-las de volta em solicitações com várias etapas
-
Central de documentação da APIYI: guias de desenvolvimento da linha Nano Banana, implementação de conversas com várias etapas e chamadas no formato nativo do Gemini
- Link:
docs.apiyi.com - Descrição: reúne endpoints de integração, caminhos para usar o formato nativo e exemplos de montagem do histórico, servindo como referência para implementar o código deste artigo
Autor: equipe técnica da APIYI
Contato técnico: fale conosco pela página inicial do site da APIYI. Para mais materiais de integração da linha Nano Banana, acesse a central de documentação em docs.apiyi.com
