Bot de IA

Traduzido do original em espanhol. Ler em espanhol

Neste tutorial vamos aprender a criar um bot de IA simples para responder perguntas usando Python e Azure OpenAI. Vamos montar um sistema básico capaz de responder perguntas em uma conversa interativa pela linha de comando.

iStock AI Generator

Pré-requisitos

Antes de começar, instale as seguintes bibliotecas no seu ambiente Python:

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

Autenticação

Primeiro, precisamos carregar as credenciais necessárias para nos autenticar no Azure e usar os serviços do Azure OpenAI.

import os
from azure.identity import ChainedTokenCredential, EnvironmentCredential

Carregamos as variáveis de ambiente AZURE_TENANT_ID, AZURE_CLIENT_ID e AZURE_CLIENT_SECRET com os valores correspondentes.

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 obter o token de acesso usamos o Azure Identity. Você encontra mais informações na documentação oficial do Azure Identity.

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

Implementação do Bot de Perguntas e Respostas

Em seguida, configuramos o deployment com o nome do deployment e definimos as variáveis de ambiente necessárias.

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 o LLM e o template de mensagens para as perguntas e respostas. Você encontra mais informações sobre essas configurações na documentação do LangChain e no guia de início rápido de templates de mensagens.

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 a cadeia de processamento do bot e preparamos o chat interativo pela linha de comando.

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)

Com este código você pode interagir com o chatbot digitando perguntas no seu terminal.

Código Completo

Aqui está o código completo para executar o bot de IA de perguntas e respostas usando Python e 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)

Com este exemplo simples, você criou um bot de IA que pode servir de base para sistemas mais complexos.

Maximiliano Díaz Doglia

AI Platform Engineer & Full-Stack Developer
Building Enterprise Integrations & Automations

Publicado em: IA