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_ID
, AZURE_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.
- ChromaDB + Autenticación y Colecciones - mayo 17, 2024
- PowerShell + REST APIs para monitorear el estado de MS Flows - mayo 17, 2024
- IA Agent - mayo 11, 2024