Skip to content
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

Open
wants to merge 16 commits into
base: master
Choose a base branch
from

Conversation

successbyfailure
Copy link
Contributor

No description provided.

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

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] = []
Copy link
Contributor

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.

Copy link
Contributor Author

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.

@@ -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 = {
Copy link
Contributor

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.

Copy link
Contributor Author

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
Copy link
Contributor

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.

Copy link
Contributor Author

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(
Copy link
Contributor

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants