IA Bot

En este tutorial aprenderemos a crear un bot de IA sencillo para responder preguntas utilizando Python y Azure OpenAI. Vamos a construir un sistema básico que será capaz de responder preguntas en una conversación interactiva desde la línea de comandos.

Prerrequisitos

Antes de comenzar, necesitas instalar las siguientes librerías en tu entorno Python:

pip install langchain
pip install -U langchain-openai 
pip install azure-identity

Autenticación

Primero, debemos cargar las credenciales necesarias para autenticarnos con Azure y poder usar los servicios de Azure OpenAI.

import os
from azure.identity import ChainedTokenCredential, EnvironmentCredential

Cargamos las variables de entorno AZURE_TENANT_IDAZURE_CLIENT_ID y AZURE_CLIENT_SECRET con los valores correspondientes.

os.environ['AZURE_TENANT_ID'] = "00000000-0000-0000-0000-000000000000"
os.environ['AZURE_CLIENT_ID'] = "00000000-0000-0000-0000-000000000000"
os.environ['AZURE_CLIENT_SECRET'] = "xxxxx"

Para obtener el token de acceso utilizamos Azure Identity. Puedes encontrar más información en la documentación oficial de Azure Identity.

credential = ChainedTokenCredential(EnvironmentCredential())
access_token = credential.get_token("https://cognitiveservices.azure.com/.default")

Implementación del Bot de Preguntas y Respuestas

A continuación, configuramos el deployment con el nombre del despliegue y establecemos las variables de entorno necesarias.

deployment = "zerogap-gpt4-turbo"

os.environ["AZURE_OPENAI_ENDPOINT"] = "https://zerogap.openai.azure.com/"
os.environ["OPENAI_API_VERSION"] = "2024-02-15-preview"
os.environ["OPENAI_API_TYPE"] = "azure_ad"
os.environ["AZURE_OPENAI_API_KEY"] = access_token.token
os.environ["OPENAI_DEPLOYMENT"] = deployment

Configuramos el LLM y la plantilla de mensajes para las preguntas y respuestas. Puedes encontrar más información sobre estas configuraciones en la documentación de LangChain y la guía de inicio rápido de plantillas de mensajes.

from langchain_openai import AzureChatOpenAI
from langchain.prompts import ChatPromptTemplate

llm = AzureChatOpenAI(openai_api_version="2024-02-15-preview", azure_deployment=deployment,  temperature=0.5)

qa_system_prompt = """Tú eres un asistente para tareas de respuesta a preguntas. \
Utiliza un máximo de tres frases y mantén la respuesta concisa.\
"""
qa_prompt = ChatPromptTemplate.from_messages(
    [
        ("system", qa_system_prompt),
        ("human", "{input}"),
    ]
)

Definimos la cadena de procesamiento para el bot y preparamos el chat interactivo desde la línea de comandos.

from langchain.prompts import ChatPromptTemplate

chain = qa_prompt | llm 

print("\033[92m" + "¡Bienvenido al Bot de IA!" + "\033[0m")
print("\033[92m" + "###############################" + "\033[0m")
print("\033[92m" + "###############################" + "\033[0m")
print("\n")

while True:
    question = input("\033[93m" + "Ingresa tu pregunta: " + "\033[0m")
    if question == "quit":
        break
    result = chain.invoke({"input": question})
    print("\033[92m" + "Respuesta: " + "\033[0m", result)

Con este código podrás interactuar con el chatbot escribiendo preguntas desde tu terminal.

Código Completo

Aquí tienes el código completo para ejecutar el bot de IA para preguntas y respuestas utilizando Python y Azure OpenAI:

import os
from azure.identity import ChainedTokenCredential, EnvironmentCredential
from langchain_openai import AzureChatOpenAI
from langchain.prompts import ChatPromptTemplate

os.environ['AZURE_TENANT_ID'] = "00000000-0000-0000-0000-000000000000"
os.environ['AZURE_CLIENT_ID'] = "00000000-0000-0000-0000-000000000000"
os.environ['AZURE_CLIENT_SECRET'] = "xxxxx"

credential = ChainedTokenCredential(EnvironmentCredential())
access_token = credential.get_token("https://cognitiveservices.azure.com/.default")

deployment = "zerogap-gpt4-turbo"

os.environ["AZURE_OPENAI_ENDPOINT"] = "https://zerogap.openai.azure.com/"
os.environ["OPENAI_API_VERSION"] = "2024-02-15-preview"
os.environ["OPENAI_API_TYPE"] = "azure_ad"
os.environ["AZURE_OPENAI_API_KEY"] = access_token.token
os.environ["OPENAI_DEPLOYMENT"] = deployment

llm = AzureChatOpenAI(openai_api_version="2024-02-15-preview", azure_deployment=deployment,  temperature=0.5)

qa_system_prompt = """Tú eres un asistente para tareas de respuesta a preguntas. \
Utiliza un máximo de tres frases y mantén la respuesta concisa.\
"""
qa_prompt = ChatPromptTemplate.from_messages(
    [
        ("system", qa_system_prompt),
        ("human", "{input}"),
    ]
)

chain = qa_prompt | llm 

print("\033[92m" + "¡Bienvenido al Bot de IA!" + "\033[0m")
print("\033[92m" + "###############################" + "\033[0m")
print("\033[92m" + "###############################" + "\033[0m")
print("\n")

while True:
    question = input("\033[93m" + "Ingresa tu pregunta: " + "\033[0m")
    if question == "quit":
        break
    result = chain.invoke({"input": question})
    print("\033[92m" + "Respuesta: " + "\033[0m", result)

Con este sencillo ejemplo, has creado un bot de IA que puede ser la base para sistemas más complejos.

Maximiliano Díaz Doglia
Últimas entradas de Maximiliano Díaz Doglia (ver todo)