A downloadable tool

1 Introdução

Esse projeto é um protótipo de diálogo com NPC utilizando o Gemini, LLM (Grande modelo de linguagem) da empresa Google e foi construído para obter aprovação nas disciplinas de Programação Aplicada Avançada e Trabalho de Iniciação Científica 1.

O desenvolvimento engloba conteúdos como Inteligência Artificial Generativa, LLMs, Desenvolvimento de Scripts Complexos, Desenvolvimento de aplicação web, Integração Back-end e Front-end e Game Design.

Com isso, o objetivo será enriquecer o entretenimento com a utilização de uma tecnologia nova aplicada em um ambiente de jogo. Futuramente esse protótipo será utilizado para explorar e experimentar o uso de triggers acionados de acordo com o diálogo, em que o NPC executa uma ação que afeta o fluxo do jogo.

Para esse projeto foi utilizado a metodologia Double Diamond, que conta com 4 passos: 

  1. Descobrir: Com o reconhecimento do problema a ser resolvido, iniciou-se uma busca por materiais que auxiliassem a compreender a possibilidade e limitações sobre o uso de LLMs e possíveis ferramentas a serem utilizadas.
  2. Definir: Após a obtenção de  informações necessárias passou a ser necessário decidir quais seriam as ferramentas a serem utilizadas. Essa decisão parte da comparação entre aspectos positivos e negativos das opções.
  3. Desenvolver: Início da construção do protótipo, da narrativa e do prompt, junto com experimentação.
  4. Entregar: Protótipo sanando o objetivo de conversar com um NPC que é resistente a mudança de contextos.

2 Desenvolvimento

Para essa pesquisa é importante considerar os seguintes conceitos pesquisados:

  • Inteligência Artificial Generativa é um sistema que realiza tarefas que precisam de inteligência humana e por ser generativa ela é treinada  para compreender padrões de dados e então gerar novas informações.
  • LLMs são modelos de IA treinados por uma gama de dados e por isso são capazes de gerar e entender a linguagem humana
  • API significa interface de programação de aplicações, são um conjunto de tecnologias para conectar soluções e serviços.

2.1 Conceito do protótipo

Esse protótipo simula um jogo de aventura, consiste apenas no chat com NPC e se preocupa mais com funcionalidade do que estética.

A narrativa do jogo em que o chat se contextualiza conta com o mundo de Nyxara que é noturno e banhado pela luz de três luas, o brilho da terceira lua está se perdendo e o personagem Eryndor, um idoso e sábio centauro, poderá ajudar na busca desse brilho, porém  ele é um pouco resistente a auxiliar qualquer um.

A composição da UI conta com : caixa de texto para inserção de input e botão para enviar a mensagem. Após enviar a mensagem aparece abaixo com o rótulo "user" e a resposta do modelo com  "model".

Figura 1:  Componentes do chat [Autoria própria]

 Componentes do chat

2.2 Programação 

Para realizar o protótipo as seguintes tecnologias foram utilizadas:

Figura 2: Código para criação do histogram  [Fonte na figura]

  • Javascript - linguagem de script para páginas Web;
  • NodeJS - ambiente de execução de JavaScript que permite criar servidores, aplicações da Web, entre outros... ;
  • Git e Github - o primeiro é uma ferramenta de versionamento de código e o segundo realiza a hospedagem em repositório;
  • VSCode - editor de código;
  • ReactJS - biblioteca que permite a componetização;
  • ExpressJS - framework de aplicativo da web Node.js;
  • Gemini - modelo de IA do Google;

A seguir será demonstrado algumas partes mais importantes do código, caso haja interesse é possível acessar todo ele através do link para o repositório que está após as referências.

Figura 3:  Parte do código em que é realizada a requisição para o servidor (comunicação entre front-end e back-end)  [Autoria própria]

A função assíncrona é utilizada pelo fato de que pode demorar para receber a resposta da requisição, e assim a execução de outras partes do código não é interrompida. A figura abaixo exemplifica isso: 

Figura 4:  Diferença entre função síncrona e assíncrona  [Fonte: https://community.revelo.com.br/programacao-sincrona-vs-assincrona/]

A variável chatHistory na figura 3 assume um papel importante, ela é um array que armazena todo o histórico do chat e é enviado em toda requisição para o modelo obter o contexto da conversa. Ao se obter uma resposta o novo input e output são então adicionados ao histórico.

Na figura a seguir, está a parte do servidor (back-end) em que é feita uma requisição para o modelo "gemini-1.5-pro-latest" junto com um prompt que envia todo o contexto para o modelo de como ele deve atuar.

Figura 5:  Requisição para o Gemini  [Autoria própria]


2.3 Discussão dos Resultados

As disciplinas realizadas colaboraram muito com a produção desse protótipo. Houve dificuldade inical ao descobrir como implementar o LLM no chat, mas quando a escolha do Gemini foi feita descobriu-se uma documentação rica produzida pela Google ensinando como aplicar, com exemplos de código em várias linguagens.

A realização do projeto foi muito desafiadora, ajudou muito ter o conhecimento do idioma inglês que atuou como uma ponte para acessar informações valiosas.  

Quanto a carência estética, justifica-se pois poderia dificultar na continuação do projeto (pretende-se simular movimentação do personagem principal no projeto e um pop-up para abrir o chat).

Pela falta de conhecimento no uso de muito das ferramentas utilizadas no início do projeto, dificultou-se prever o que seria feito até o final do semestre, houveram várias adaptações no cronograma. Contudo, o resultado apresenta-se suficiente e vai aliviar a continuação do projeto no próximo semestre.

3 Conclusão

A aplicação de um chat que funciona com um LLM em um jogo é possível e o que foi feito até o final desse semestre (2024/1) irá ser muito útil para que no próximo haja um foco na implementação dos triggers. Sobre esse último já revisou-se a possibilidade utilizando o gemini na documentação (https://ai.google.dev/gemini-api/docs/function-calling?hl=pt-br).

Quanto aos objetivos pessoais, esse projeto impulsionou meu desenvolvimento como profissional, trabalhando comunicação tanto escrita como verbal, programação e a exploração de conceitos que considero como avançados comparado ao que sabia anteriormente. Por isso, sou muito grata aos professores que me ajudaram nesse projeto e a todos que me apoiaram.

Referências

EXPRESS - framework de aplicativo da web Node.js. Disponível em: https://expressjs.com/pt-br/. Acesso em: 23 jun. 2024.

GIT. Disponível em: https://git-scm.com/. Acesso em: 23 jun. 2024.

GITHUB: let’s build from here. Disponível em: https://github.com/. Acesso em: 23 jun. 2024.

GOOGLE AI for Developers | Build with the Gemini API  |  Google for Developers. Disponível em: https://ai.google.dev/gemini-api/. Acesso em: 23 jun. 2024.

JAVASCRIPT | MDN. Disponível em: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript. Acesso em: 23 jun. 2024.

MICROSOFT. Visual Studio Code - Code Editing. Redefined. 03 nov. 2021. Disponível em: https://code.visualstudio.com/. Acesso em: 23 jun. 2024.

NODE.JS. Node.js. Disponível em:  https://nodejs.org/pt<https: nodejs.org="" en="">. Acesso em: 23 jun. 2024.</https:>

O QUE é API? Guia de APIs para iniciantes. Disponível em: https://www.redhat.com/pt-br/topics/api/what-are-application-programming-interfaces. Acesso em: 23 jun. 2024.

OZDEMIR, S. Quick start guide to large language models: Strategies and best practices for using ChatGPT and other LLMs. Boston, MA, USA: Addison Wesley, 2023. E-book (não paginado). 

REACT. Disponível em: https://pt-br.react.dev/. Acesso em: 23 jun. 2024.

SPADINI, Allan Segovia. O que é IA Generativa? A importância e o uso das Inteligências Artificiais como ChatGPT, MidJourney e outras. Alura. 11 de out. de 2023. Disponível em:https://www.alura.com.br/artigos/inteligencia-artificial-ia-generativa-chatgpt-gpt-midjourney. Acesso em: 27 de abr. de 2024.

SENG, S. A. C. Guide: What is Google Gemini API and How to Use it? Apidog. 11 mar. 2024. Disponível em:https://apidog.com/blog/google-gemini-api/. Acesso em: 10 jun. 2024.

TORRES, M. Inteligência artificial generativa para criação de conteúdo em jogos digitais. Recife: Centro de Informática – Universidade Federal de Pernambuco (UFPE), 2023. Disponível em: https://www.cin.ufpe.br/~tg/2023-1/TGs_CC/tg_mbmt.pdf. Acesso em: 10 mai. 2024.

-‌---

Feito com carinho por Luísa Rodrigues Foppa - Desenvolvedora de jogos e front-end.

Itch.io:  https://luisafoppa.itch.io/;

Linkedin: https://www.linkedin.com/in/luisa-rodrigues-foppa-513b9b182/;

Repositório desse projeto disponível publicamente em https://github.com/Luisaarf.

...

Marcelo Dornbusch Lopes - Orientador - m4rc3lo

Universidade do Vale do Itajaí - UNIVALI

Cesar Albenes Zeferino | Diretor Escola Politécnica

Giorgio Gilwan | Coordenador do Curso de Design de Jogos

Rafael Kojiio | Coordenador Gamelab UNIVALI

-‌---

Projeto  desenvolvido como requisito parcial para obtenção de aprovação nas disciplinas: 

Programação Aplicada Avançada - Professor Me. Marcelo Dornbusch Lopes ;

Trabalho de Iniciação Científica 1 - Professor Me. Dennis Kerr Coelho.

Updated 22 days ago
StatusReleased
CategoryTool
Rating
Rated 5.0 out of 5 stars
(1 total ratings)
AuthorLuisa.foppa
TagsAI Generated, chat, dialogue, Game Design, llm

Leave a comment

Log in with itch.io to leave a comment.