Deseja criar um aplicativo que forneça recomendações personalizadas de jogos? Este tutorial o guiará passo a passo pelo uso das técnicas de Geração Aumentada de Recuperação (RAG), combinadas com o DeepSeek responder cantando Ollama para criar um sistema de recomendação de jogos personalizado.
Usaremos o conjunto de dados da Epic Games Store para a jogos.csv
como fonte de dados. As opções de pilha de tecnologia para este tutorial são as seguintes:
- Modelos de linguagem grandes (LLM): usaremos o Ollama para executar o
deepseek-r1:1.5b
Modelos. - Modelos de incorporação: Usaremos o modelo de incorporação da Weaviate
text2vec_openai
com o componente padrãoincorporação de texto-3-pequeno
Modelos.
Etapa 1: Instale as bibliotecas dependentes e configure as chaves de API
Primeiro, você precisará instalar as seguintes bibliotecas Python, que são necessárias para criar e executar o RAG necessário para o aplicativo.
!pip install weaviate-client pandas tqdm ollama
Em seguida, para usar o modelo de incorporação da OpenAI, você precisa configurar a chave da API da OpenAI. Se você ainda não a configurou, siga estas etapas:
from getpass import getpass
import os
Se "OPENAI_APIKEY" não estiver em os.environ: os.environ["OPENAI_APIKEY"] = getpass("Enter your OpenAI API Key")
os.environ["OPENAI_APIKEY"] = getpass("Digite sua chave da API do OpenAI")
Esse código verifica se OPENAI_APIKEY já existe em suas variáveis de ambiente e, se não existir, ele solicita que você insira sua chave de API OpenAI e a defina como uma variável de ambiente.
Etapa 2: Execute o modelo DeepSeek
Este tutorial usa o Ollama para executar o modelo deepseek-r1:1.5b localmente. Se você ainda não instalou o Ollama e extraiu o modelo deepseek-r1:1.5b, consulte os documentos oficiais do Ollama para concluir a instalação e a extração do modelo.
No macOS, por exemplo, você pode executar o modelo DeepSeek no Terminal usando o seguinte comando:
ollama executar deepseek-r1:1.5b
Certifique-se de que o modelo seja executado com êxito antes de passar para a próxima etapa.
Etapa 3: Criar e preencher a coleção Weaviate
As coleções Weaviate são usadas para armazenar e recuperar dados de jogos. Siga as etapas abaixo para criar e preencher sua coleção Weaviate:
- Baixe o arquivo games.csv: Baixe o arquivo games.csv do Kaggle (Kaggle) em seu diretório local.
- Iniciando o contêiner do Weaviate Docker: inicie o Weaviate usando o seguinte arquivo docker-compose.yml e verifique se os módulos generative-ollama e text2vec-openai estão ativados. Salve o seguinte como um arquivo docker-compose.yml e inicie o Weaviate em um terminal usando o comando docker compose up.
---
serviços.
weaviate_anon.
comando:
--host
- 0.0.0.0
--port
- '8080'
---scheme
- http
imagem: cr.weaviate.io/semitechnologies/weaviate:1.28.4
portas.
- 8080:8080
- 50051:50051
reinicialização: em caso de falha:0
ambiente.
QUERY_DEFAULTS_LIMIT: 25
AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true'
PERSISTENCE_DATA_PATH: '/var/lib/weaviate'
ENABLE_API_BASED_MODULES: 'true' (ativar módulos baseados em API)
BACKUP_FILESYSTEM_PATH: '/var/lib/weaviate/backups'
CLUSTER_HOSTNAME: 'node1'
LOG_LEVEL: 'trace'
ENABLE_MODULES: "text2vec-openai,generative-ollama"
...
- Criar a coleção "Games": execute o seguinte código Python para criar uma coleção Weaviate chamada "Games". Esse código define as propriedades da coleção, incluindo nome do jogo, preço, plataforma, data de lançamento e descrição, e configura os módulos generative-ollama e text2vec-openai.
importar weaviate
import weaviate.classes.config as wc
from weaviate.util import generate_uuid5
from weaviate.util import generate_uuid5
from tqdm import tqdm
import pandas as pd
headers = {"X-OpenAI-Api-Key": os.getenv("OPENAI_APIKEY")}
cliente = weaviate.connect_to_local(headers=headers)
if client.collections.exists("Games"):: client.collections.delete("Games").
client.collections.delete("Games")
client.collections.create(
name="Games",
properties=[
wc.Properties(name="name", data_type=wc.DataType.TEXT),
wc.Properties(name="price", data_type=wc.DataType.INT),
wc.Property(name="platforms", data_type=wc.DataType.TEXT_ARRAY), wc.Property(name="platforms", data_type=wc.DataType.TEXT_ARRAY), wc.
wc.Property(name="release_date", data_type=wc.DataType.DATE), wc.Property(name="release_date", data_type=wc.DataType.DATE), wc.
wc.Property(name="description", data_type=wc.DataType.TEXT),
],
generative_config=wc.Configure.Generative.ollama(model="deepseek-r1:1.5b",
api_endpoint="http://host.docker.internal:11434"),
vectorizer_config=wc.Configure.Vectorizer.text2vec_openai(), )
)
- Importação de dados de jogos: use o código a seguir para importar os dados do arquivo games.csv para a coleção "Games". O código lê o arquivo CSV e converte cada linha de dados em objetos Weaviate, que são então adicionados à coleção em massa.
games = client.collections.get("Games")
df = pd.read_csv('games.csv')
with games.batch.dynamic() as batch: for i, game in tqdm(df.iterrows())
for i, game in tqdm(df.iterrows()):: platforms = game["platform"].
platforms = game["platform"].split(',') if type(game["platform"]) is str else []
game_obj = {
"name": jogo["name"],
"platforms": platforms, "price": game["price"], game["platform"], game["platform"] is str
"description": jogo["description"],
}
batch.add_object(
properties=game_obj,
uuid=generate_uuid5(game["id"])
)
if len(games.batch.failed_objects) > 0:.
print(f "Falha ao importar {len(games.batch.failed_objects)} objetos")
print(games.batch.failed_objects)
Etapa 4: Executar uma pesquisa incorporada
Agora, sua coleção "Games" está preenchida com dados. Você pode tentar fazer uma pesquisa incorporada para recuperar jogos relacionados à consulta do usuário. O código a seguir demonstra como consultar os jogos relacionados a "I play the vilain" e retornar os três resultados mais relevantes.
response = games.query.near_text(query="I play the vilain", limit=3)
for o in response.objects: print(o.properties)
print(o.properties)
Esse código gera informações sobre os três atributos do jogo relevantes para a consulta, como plataforma, descrição, preço, data de lançamento e nome.
Etapa 5: Criar o aplicativo RAG recomendado
Para implementar recomendações de jogos mais inteligentes, precisamos criar um aplicativo RAG. A função recommend_game a seguir faz isso. Ela recebe uma consulta do usuário como entrada, recupera os 5 jogos mais relevantes e usa o modelo deepseek-r1:1.5b para gerar recomendações personalizadas.
def recommend_game(query: str):
response = games.generate.near_text(
query=query,
query=query, limit=5, grouped_task=f""
grouped_task=f"""Você recebeu alguns jogos relevantes com base na consulta do usuário.
Forneça uma resposta à consulta. Sua resposta final DEVE indicar a plataforma em que cada jogo está disponível.
grouped_properties=["name", "description", "price", "platforms"], )
)
return {'thought': response.generated.split('')[0], 'recommendation': response.generated.split('')[1]}
Essa função usa o método games.generate.near_text, que não só executa uma pesquisa vetorial, mas também usa o modelo generativo para gerar texto recomendado com base nas informações recuperadas do jogo. O parâmetro grouped_task define a tarefa generativa do modelo, instruindo-o a gerar uma resposta com base na consulta do usuário e nas informações recuperadas do jogo, e solicitando explicitamente que a resposta contenha as informações sobre a plataforma do jogo.
Você pode testar seu aplicativo de recomendação de jogos chamando a função recommend_game e passando uma consulta do usuário. Por exemplo, a consulta "Quais são alguns jogos em que posso interpretar uma criatura mágica".
response = recommendation_game("What are some games that I get to role playing a magical creature")
print(response['recommendation'])
Execute esse código e você verá os resultados das recomendações de jogos geradas pelo modelo, por exemplo:
Aqui estão vários jogos que permitem que você interprete uma criatura mágica.
1.**Mages of Mystralia**
- **Plataforma:** Windows
- Descrição: um RPG de fantasia em que você cria seus próprios feitiços em um mundo de magia, permitindo criatividade e flexibilidade.
2. **Geneforge 1 - Mutagen** **Plataformas:** Windows Descrição.
- **Plataformas:** Windows, Mac
- Descrição: um RPG aberto com monstros mutantes, várias habilidades, tesouros, facções e possibilidades de criação, oferecendo liberdade e rejogabilidade sem igual. liberdade e capacidade de reprodução inigualáveis.
- Plataforma: Windows
- Descrição: um jogo de aventura em 3D no qual você atua como fotógrafo da vida selvagem, explorando ecossistemas mágicos, com foco no aprendizado comportamental para Um jogo de aventura em 3D em que você atua como fotógrafo da vida selvagem explorando ecossistemas mágicos, com foco no aprendizado de comportamento para fotografia.
4. **Paper Beast** **Plataformas:** Windows
- **Plataformas:** Windows (PC)
- Descrição: um jogo de aventura sobre como perturbar o equilíbrio da vida selvagem com foco em criaturas exóticas e resolução de mistérios.
5. **Black Book** **Plataforma:** **Windows (PC) Descrição.
- **Plataforma:** Windows
- Descrição: um RPG sombrio baseado em mitos eslavos, jogado como uma jovem feiticeira em um mundo de criaturas mitológicas por meio de batalhas baseadas em cartas.
Cada jogo oferece experiências únicas adequadas para a interpretação de papéis como uma criatura mágica.
Se quiser ver o que o modelo está pensando ao gerar resultados de recomendação, você pode imprimir a propriedade response['thought']:
print(response['thought'])
Isso produzirá o processo de pensamento do modelo em segundo plano e o ajudará a entender melhor a lógica da recomendação.
Ok, então eu preciso descobrir alguns jogos que me permitam interpretar uma criatura mágica. O usuário forneceu várias opções, cada uma com uma descrição e uma plataforma Vou examiná-las uma a uma.
Pela descrição, trata-se de um RPG de fantasia em que você cria seus próprios feitiços em um mundo de magia. A plataforma é o Windows, portanto, talvez o usuário possa executá-lo em seu PC ou em qualquer sistema de desktop.
Em seguida, temos o "Geneforge 1 - Mutagen", que parece ser um RPG aberto com monstros mutantes e uma mecânica de batalha. A descrição diz que ele tem inúmeras habilidades, tesouros, facções e criações. É descrito como tendo inúmeras habilidades, tesouros, facções e possibilidades de criação. A liberdade incomparável e a possibilidade de reprodução fazem sentido porque permitem várias histórias. A plataforma aqui é Windows e Mac, portanto, opções compatíveis seriam úteis.
Como o nome sugere, é um jogo de aventura em 3D em que você assume o papel de um fotógrafo da vida selvagem que explora ecossistemas. Ele se concentra no aprendizado de comportamento e na fotografia, o que pode ser interessante para alguém que deseja desempenhar um papel na natureza. A plataforma é o Windows, portanto A plataforma é Windows, portanto, deve ser acessível.
A plataforma é Windows, portanto, deve ser acessível. "Paper Beast" é outro jogo de aventura mencionado. Trata-se de um poder desconhecido que perturba o equilíbrio da vida selvagem, com os jogadores se unindo a criaturas exóticas para resolver mistérios. Embora seja voltado para PC, talvez haja opções de portabilidade disponíveis ou dispositivos diferentes que possam executá-lo, se o usuário tiver acesso a eles.
Por fim, "Black Book". Esse RPG sombrio é baseado em mitos eslavos e é jogado como uma jovem feiticeira, envolvendo batalhas baseadas em cartas em um mundo com criaturas mitológicas. A plataforma aqui é o Windows, portanto, talvez o hardware mais antigo seja um pouco limitado, a menos que o usuário tenha um PC atualizado ou um console dedicado.
Devo me certificar de que cada jogo esteja listado claramente com suas plataformas e quaisquer detalhes necessários sobre como eles funcionam como criaturas mágicas. Além disso, é bom Além disso, é bom oferecer algumas opções se algumas não estiverem disponíveis. Talvez sugerir jogos de plataforma cruzada ou plataformas que possam ser usadas para jogar.
</Maybe suggest cross-platform games or platforms that can be used for playing.
Parabéns! Você criou com êxito um aplicativo RAG de recomendação de jogos com base no DeepSeek e no Ollama. Neste tutorial, você aprendeu os conceitos básicos de como criar um sistema de recomendação personalizado usando técnicas RAG combinadas com um modelo de linguagem grande e um banco de dados vetorial. Você pode estender e aprimorar o aplicativo de acordo com suas necessidades, como adicionar mais dados de jogos, otimizar o algoritmo de recomendação ou desenvolver a interface do usuário para criar um serviço de recomendação de jogos melhor.