Saltar a contenido

General AI Chat

Introducción

Este fragmento de código es parte de una aplicación web desarrollada usando Streamlit, una librería de Python para crear aplicaciones web. La aplicación cuenta con una interfaz de chat con IA general, donde los usuarios pueden interactuar con un modelo de IA, presumiblemente para consultas generales o conversaciones.

Desglose del código

Imports

import base64
import time
import uuid
import streamlit as st
from streamlit_chat import message
import openai
import azure.cognitiveservices.speech as speechsdk
from helpers.LogGeneartor import LogGenerator
from PIL import Image

El código importa varias librerías incluyendo Streamlit, OpenAI, Servicios Cognitivos de Azure y PIL (Python Imaging Library).

Configuración OpenAI API

openai.api_key = st.secrets.openai.api_key
openai.api_base = st.secrets.openai.api_base
openai.api_type = st.secrets.openai.api_type
openai.api_version = st.secrets.openai.api_version

Configura la API de OpenAI con las credenciales y ajustes necesarios almacenados en los secretos de Streamlit.

Configuración de la Página de Streamlit

st.set_page_config(page_title="Chat General", page_icon="📃", layout="centered")
sogetilabs_logo = Image.open('images/SogetiLabs_Logo.png')
st.image(sogetilabs_logo, width=200)
st.title("Chat General con IA")

Configura la página de Streamlit con un título, ícono y disposición. Además, muestra una imagen (logo) y un título para la aplicación de chat.

Gestión de la Sesión del Usuario

if 'user_id' not in st.session_state:
    st.session_state.user_id = str(uuid.uuid4())

Genera un ID de usuario único para la sesión si aún no está presente.

Manejo de Mensajes de Chat

if "general_chat_messages" not in st.session_state:
    st.session_state.general_chat_messages = []

Inicializa una lista para almacenar mensajes de chat en el estado de la sesión.

Mostrando Mensajes

for message in st.session_state.general_chat_messages:
    with st.chat_message(message["role"]):
        st.markdown(message["content"])

Muestra los mensajes de chat en la página web.

Entrada de Chat

if prompt := st.chat_input("Ask me something"):

Captura la pregunta del usuario, el := lo que hace es que si no hay pregunta devuelve false para evitar que se meta dentro del bloque condicional.

Completado de Chat de OpenAI

for response in openai.ChatCompletion.create(
    # ...
):

Utiliza la API ChatCompletion de OpenAI para generar respuestas basadas en la entrada del usuario y el historial de chat anterior.

Actualización del Estado de la Sesión con Mensajes de Chat

st.session_state.general_chat_messages.append({"role": "assistant", "content": full_response})

Agrega las respuestas del asistente de IA al historial de chat en el estado de la sesión.

Propósito

La aplicación sirve como una plataforma de chat AI interactiva, utilizando el modelo de lenguaje de OpenAI para generar respuestas. Está diseñada para consultas generales o conversaciones informales, mostrando las capacidades de la IA en comprender y responder a consultas humanas.