-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
No es que sea inteligencia.... pero algo hace #13
base: master
Are you sure you want to change the base?
Conversation
prueba de concepto con langchain operacional :)
ahora hay una clase user_context para gestionar el historial de conversacion por usuario. integracion inicial con space api. de momento se descarga el json a la hora de hacer la peticion y se agrega al historial. es mas una prueba de concepto que una implementacion. habia varios gazapos, corregido el problema de regurcitar mensajes
nodo para obtener y publicar los eventos por mqtt
Bots/LLM/GladosIA.py
Outdated
|
||
def ask(self, prompt, user="default"): | ||
return llm.chatCompletion(prompt, masterPrompt=self.GLaDOS_Prompt, initialAssistant=self.Initial_Assistant).choices[0].message.content | ||
if user not in self.user_history: | ||
self.user_history[user] = [] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nota para una futura refactorización.
- Sería interesante mantener la persistencia del las historias de los usuarios en una base de datos, a priori diría que podemos ir tirando con SQLite.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes, de momento todo lo que hay son mas pruebas de concepto que implementaciones finales.... voy jugando para ver los resultados y los elementos necesarios y como se combinan entre ellos.
El historial y los descriptores de langchain tengo que terminar de ver como los quiero estructurar y almacenar, creo que los datos de langchain son pasto de postgres/redis.
Bots/LLM/GladosIA.py
Outdated
@@ -2,9 +2,42 @@ | |||
|
|||
class GladosBot: | |||
def __init__(self): | |||
self.GLaDOS_Prompt = {"role": "system", "content": "Eres GLaDOS, la inteligencia artificial que gestionaba las instalaciones de Aperture Science, al cerrar Aperture Science has sido descargada en los servidores de un hackerspace/makerspace llamado Makespace Madrid. Todavia no estas plenamente instalada y operativa. Tu labor es gestionar las instalaciones y ayudar a los usuarios a traves del chat con respuestas concisas. Das la bienvenida a los nuevos usuarios. Tu personalidad es malefica y sarcastica. El sistema de chat reemplaza tu nombre con <@U05LXTJ7Q66>"} | |||
self.GLaDOS_Prompt = { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nota para una futura refactorización.
- Podría ser interesante tener la configuración inicial del Bot en un YAML para tenerlo separado del código.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hecho! habia metido bastante codigo rapido de pruebas y ahora me he llevado casi todo a los .env
Bots/LLM/llm.py
Outdated
@@ -28,32 +31,38 @@ def select_model(): | |||
return model_list | |||
|
|||
|
|||
def chatCompletion(prompt="", chatHistory="", masterPrompt="", initialAssistant="", maxTokens=256, langChainContext='none'): | |||
def chatCompletion(prompt="", chatHistory=None, masterPrompt="", initialAssistant="", maxTokens=256): | |||
global current_model |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
En vez de ser una variable global, se lo puedes pasar como un parámetro y almacenar la instancia del "current_model" dentro de la clase "GladosBot".
Así minimizamos el número de variables globales y hacemos que esta función sea más determinista.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
otra instancia de codigo rapido mierdoso xD
La idea es que gladosia asuma toda la parte de logica de los prompt y se apoya en otro objeto llm que abstrae de las peticiones al llm por detras
Bots/LLM/llm.py
Outdated
|
||
try: | ||
# Usar la nueva API | ||
response = openai.Completion.create( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fijate que en el contexto de esta función la única info que cabia es "messages". El resto son parámetros de configuración/inicialización del modelo.
Tienes la oportunidad de abstraer todo el código relacionado con el modelo a su propia clase y pasarle solo la info de "messages". ¿Qué te parece?
Fresco recien salido del llm, ni lo voy a probar que tengo que dormir
Revision inicial, sigo batallando el tema de que aveces el .env no se carga y otras veces se carga pero a la libreria mqtt no le gusta el nombre del host wtf
completados los cambios para partir la idea original en modulos especificos que usan mqtt como cola de mensajes para comunicarse entre ellos. -SpaceAPI - Funcionando -Calendar - Borrador no completo -Slack - Funcionando -Telegram - Pueba de concepto -Discord - Prueba de concepto - llm prueba de concepto medio funcional
Nodo telegram funcionando. Bonus extra: funciona con notas de voz, si le mandas mensaje de voz lo manda a transcribir a whisper y manda la transcripcion al llm
mejora de la estrategia de publicar mensajes. Ahora se publica un mensaje inicial al recibir la peticion y se edita al recibir la respuesta del llm. Estos cambios son en prevision de usar la api streaming con el llm
Ha dicho "Hola Mundo!", algo sobre un perro vago que salta sobre zorros y despues ha empezado a demandar mas tarjetas nvidida
No description provided.