Oficial! Gemini Google AI Dart/Flutter SDK— Integrando Flutter com o GEMINI
Tags: gemini, llm, ia, flutter
Published: 2024-05-18 13:58:49

![](https://cdn-images-1.medium.com/max/800/1*3gmetTYfX_C4Y_THLmXUZQ.png)

Fala Devs, blz?

No dia 14/02/2024 a Google anunciou oficialmente o Gemini([https://gemini.google.com/](https://gemini.google.com/)) e no dia 15/02/2024 a Google nos surpreendeu com o lançamento do Flutter 3.19.0 e com ele o Dart 3.3 essa versão veio com muitas novidades ([https://medium.com/flutter/whats-new-in-flutter-3-19-58b1aae242d2](https://medium.com/flutter/whats-new-in-flutter-3-19-58b1aae242d2)) que iremos comentar em breve. Contudo, algo que nos fez brilhar os olhos foi o anúncio do Gemini google AI Dart SDK, ou seja, um SDK do Gemini nativamente para o Flutter/Dart, isso ressalta a importância que o Flutter está tendo para a Google, pois o Flutter/DART é a primeira ferramenta com um SDK Nativo.

![](https://cdn-images-1.medium.com/max/800/1*ZY5DDMWq9a--zHBcCR2fNw.png)

E eu vendo isso já fui testar e trazer as novidade para vocês, pois com um package desenvolvido pela Google faz perder todo o sentido de usar um pacote terceiro para podermos integrar com o Gemini([https://pub.dev/packages/google_generative_ai](https://pub.dev/packages/google_generative_ai)).

Para começar ainda necessitaremos gerar nossa API Key em [https://ai.google.dev/](https://ai.google.dev/) como expliquei em detalhes no artigo anterior.

![](https://cdn-images-1.medium.com/max/800/1*kEH8hM2twCcs9wvckqvusw.png)

Agora em nosso projeto flutter necessitaremos adicionar o pacote no pubspec

> flutter pub add google_generative_ai

Iremos abordar os dois modos disponíveis: somente texto e chat com contexto. Para configurar o Gemini precisamos instanciar o objeto GenerativeModel() passando a ApiKey (que estamos passando via dart-define-from-file) e o modelo de IA, iremos utilizar o gemini-pro.
{% gist https://gist.github.com/toshiossada/a9a528804dd038ce17bb3e0055966797 file=gemini_init %}

Para gerarmos um diálogo com o Gemini precisamos gerar um Content.text(String) passando nossa pergunta e utilizando o método generateContent() do GeminiModel() iremos obter a resposta dada pela IA.
{% gist https://gist.github.com/toshiossada/6f581c07fcbf7bdd614ec4e95ad6d371 file=gemini-generate-content.dart %}

E a partir daí é só mostrar na tela a resposta gerada pelo Gemini, caso deseja fazer a animação de digitação igual ao artigo anterior podemos utilizar o AnimatedTextKit([https://pub.dev/packages/animated_text_kit](https://pub.dev/packages/animated_text_kit)) para isso.
{% gist https://gist.github.com/toshiossada/52dfe1a27988d3f4c312a5be5ab709e2 file=animated-text.dart %}

![](https://cdn-images-1.medium.com/max/800/1*U1qsn4FGhg-qhBEOa05mFA.gif)

Também é possível criar um diálogo com contexto para a conversa, podendo pré-definir algum prompt, para isso precisamos além de configurar o GeminiModel() também necessitamos iniciar um chat com o método startChat()
{% gist https://gist.github.com/toshiossada/7e53468b08ec03c40901cdeb98b387b5 file=gemini-chat.dart %}

Agora para enviar mensagens para o Gemini basta executarmos o método sendMessage() passando a mensagem.
{% gist https://gist.github.com/toshiossada/162657adb75d8ad38b05237358f449fb file=send-message.dart %}

Agora para mostrarmos a conversa a tela podemos pegar o histórico do chat
{% gist https://gist.github.com/toshiossada/8b4ae4dc87b1891e79e60e34a2502dd5 file=gemini-history.dart %}


O history nos traz algumas informações importante com o remetente da mensagem no atributo role que será “user” caso tenha sido o usuário que enviou a mensagem ou “model” caso seja a IA que tenha enviado a mensagem.

![](https://cdn-images-1.medium.com/max/800/1*3FZDP0M-by18hgYvXu0pJA.png)

Outro ponto importante é juntar todas as partes da resposta enviada pelo Gemini

![](https://cdn-images-1.medium.com/max/800/1*qmkiiw9OEuWy4ssiJ0XL5A.png)

E por fim podemos exibir a mensagem na tela do nosso aplicativo

![](https://cdn-images-1.medium.com/max/800/1*pwvHBTLAOPnwsF5IRcWuiQ.png)

E o resultado será esse

![](https://cdn-images-1.medium.com/max/800/1*d--kK-IWIffqlsTfVWGLWA.gif)

Infelizmente o modelo de análise de imagens ainda não esta disponivel.

![](https://cdn-images-1.medium.com/max/800/1*09t2vi062DjdYTF20W-ORw.png)

Mas creio que em um futuro proxímo poderemos fazer algo do tipo
{% gist https://gist.github.com/toshiossada/cffc493a7f3daf06972c8814d3b9dd5d file=iamge.dart %}

Vale ressaltar que alguns recursos não estão disponíveis na versão gratuita e é possível consultar os planos em [https://ai.google.dev/pricing?hl=pt-br](https://ai.google.dev/pricing?hl=pt-br).

![](https://cdn-images-1.medium.com/max/800/1*gF1K1ZrGHRe0osnT3yYUFQ.png)

Muito bacana essa novidade né? Todos sabemos que o Gemini é a grande novidade da Google e que eles vão investir e evoluir muito nele e que em menos de uma semana já desenvolveram um SDK para o Flutter só nos mostra a importância desta ferramenta que amamos para a Google e que ainda tem muitos anos de vida.

Podem conferir o exemplo que usei neste artigo em

https://github.com/toshiossada/gemini_flutter_example


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/obcg0d2y00yddve9quky.png)


Entre em nosso discord para interagir com a comunidade: flutterbrasil.com.br