En el presente proyecto muestro la construcción de una sistema de recomendación, el sistema permite recomendar recursos a través del uso de mecanismos de Procesamiento de lenguaje natura como agentes langchain, IA generatica y embeddings.
Project description
Sistema de recomendación con agente langchain
Acerca del proyecto
En el presente proyecto muestro la construcción de una sistema de recomendación, el sistema permite recomendar recursos a través del uso de mecanismos de Procesamiento de lenguaje natura como agentes langchain, IA generatica y embeddings.
Procesos
- Configuración y creacion del modulo de la base de datos vectorial con ChromaDb
- Creación del módulo y configuracion del agente Langchain
- Módulo principal de recomendación el cual gestiona e integrar los dos anteriores modulos
Tecnologías
- Python
- ChromaDB
- Langchain
- Llama
- HugginFace
- pytorch
- OpenAI
- Groq
- Embeddings
- LLM
Prerequisitos
- Instalar Python (https://www.python.org/downloads/).
- Obtener una API KEY de OpenAI (opcional si se va a utilizar Groq) (https://openai.com/).
- Obtener una API KEY de groq (opcional si se va a utilizar OpenAI) (https://console.groq.com/keys)
Instalacion manual desde el repositorio
-
Clonar el repositorio
git clone https://github.com/johansquintero/recommender-agent
-
Crear el entorno virtual
python -m venv env
-
Activar entorno virtual (windows):
env\Scripts\activate
-
Instalar las dependencias del proyecto:
pip install -r requirements.txt
Instalando con pip
pip install recommender-agent
Ejemplo de implementacion del sistema
Imports
from recommender_agent.recommenderSystem import CoreRecommendation
import pandas as pd
Se importa el dataset de la ruta donde este ubicado
books = pd.read_csv("../dataset_books/Books2.csv")
books = books.fillna('')
books.drop(columns=["isbn13","thumbnail","subtitle"],axis=1,inplace=True)
Un requisito es que cada uno de los elementos tengan un id
books["id"] = books.index + 1
Se convierte a diccionario el dataset
books_dict = books.to_dict(orient='records')
la libreria dispone de dos alternativas para aplicar un LLM uno por la api de OpenAI y el otro por la api de Groq, cabe recalcar que es obligatorio contar con alguna de estas 2 apis
Si se cuenta con una api key de openai este seria el proceso
openai_api_key = ""
Se inicializa la instancia el recomendador
recommender_open_ai = CoreRecommendation(openai_key=openai_api_key)
De la intancia anterior se crea ruta de persistencia de los recursos
recommender_open_ai.init_components(collection_name="books",resources=books_dict)
El el caso de usar groq este es el metodo
groq_api_key=""
recommender_groq = CoreRecommendation(groq_key=groq_api_key)
recommender_groq.init_components(collection_name="books",resources=books_dict)
Usuario de prueba en formato JSON
user = {
"user": {
"id": 234567,
"name": "Carlos Rodriguez",
"email": "carlos_rodriguez@email.com",
"address": {
"street": "Calle Principal",
"city": "Barcelona",
"state": "Spain",
"postal_code": "08001"
},
"preferences": {
"genres": ["Philosophy","Novels", "History"],
"favorite_authors": ["Dan Brown", "Ken Follett", "René Descartes"]
},
"purchase_history": [
{
"book": "The Da Vinci Code",
"author": "Dan Brown",
"price": 17.99,
"purchase_date": "2023-12-12"
},
{
"book": "The Pillars of the Earth",
"author": "Ken Follett",
"price": 22.99,
"purchase_date": "2024-01-05"
}
]
}
}
Se ejecuta el recomendador con la informacion del usuario
response = recommender_groq.get_recommendation(user=user)
print(f"Usuario={response['user']} \n")
print(f"Recomendaciones= {response['rec']}")
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for recommender_agent-0.3.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | eee3b1469a92ce401eef003098babd7f057a849b7e7a6046c7c798b67e26630e |
|
MD5 | 012a8ff028b8b45b22a0543230fb934c |
|
BLAKE2b-256 | f00a56ab1a51c37292a77ade0128d27d6d965afb2f8aa279f2e70e74e638c14a |