Bot IA

Tradotto dall'originale in spagnolo. Leggi in spagnolo

In questo tutorial impareremo a creare un semplice bot IA per rispondere alle domande usando Python e Azure OpenAI. Costruiremo un sistema di base in grado di rispondere alle domande in una conversazione interattiva dalla riga di comando.

iStock AI Generator

Prerequisiti

Prima di iniziare, installa le seguenti librerie nel tuo ambiente Python:

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

Autenticazione

Per prima cosa dobbiamo caricare le credenziali necessarie per autenticarci su Azure e usare i servizi di Azure OpenAI.

import os
from azure.identity import ChainedTokenCredential, EnvironmentCredential

Carichiamo le variabili d’ambiente AZURE_TENANT_ID, AZURE_CLIENT_ID e AZURE_CLIENT_SECRET con i valori corrispondenti.

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"

Per ottenere il token di accesso usiamo Azure Identity. Trovi maggiori informazioni nella documentazione ufficiale di Azure Identity.

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

Implementazione del bot di domande e risposte

Poi configuriamo il deployment con il nome del deployment e impostiamo le variabili d’ambiente necessarie.

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

Configuriamo l’LLM e il template dei messaggi per le domande e le risposte. Trovi maggiori informazioni su queste impostazioni nella documentazione di LangChain e nella guida rapida ai template dei messaggi.

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}"),
    ]
)

Definiamo la catena di elaborazione del bot e prepariamo la chat interattiva dalla riga di 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)

Con questo codice puoi interagire con il chatbot scrivendo domande nel terminale.

Codice completo

Ecco il codice completo per eseguire il bot IA di domande e risposte con 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)

Con questo semplice esempio hai creato un bot IA che può fare da base per sistemi più complessi.

Maximiliano Díaz Doglia

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

Pubblicato in: IA