Guida all'intelligenza artificiale auto-attiva: inizia il tuo percorso verso la creazione di agenti di intelligenza artificiale

Scopri le basi per creare agenti di intelligenza artificiale. Scopri gli strumenti e le tecniche necessarie per progettare e implementare questi sistemi intelligenti.

Il settore dell'intelligenza artificiale sta vivendo rapidi sviluppi. È impressionante e spesso confuso.

Ho studiato, imparato e costruito le mie basi in questo ambito della scienza dei dati perché credo che il futuro della scienza dei dati sia strettamente legato allo sviluppo dell'intelligenza artificiale generativa.

Sembra ieri quando ho costruito il mio primo Agente AIE due settimane dopo, c'erano molti pacchetti Python tra cui scegliere, per non parlare delle opzioni senza codice che funzionavano molto bene, come n8n.

Da semplici modelli in grado di chattare con noi a uno tsunami di agenti di intelligenza artificiale ovunque, che cercano su Internet, gestiscono file ed eseguono progetti. Scienza dei dati L'intero processo (dall'esplorazione iniziale dei dati alla modellazione e alla valutazione) si è svolto in pochi anni.

ماذا؟

Vedendo tutto questo, i miei pensieri erano: "Devo iscrivermi il prima possibile.". Alla fine è meglio cavalcare l'onda che esserne travolti.

Per questo motivo ho deciso di iniziare questa serie di post in cui ho intenzione di partire dalle basi per costruire il nostro primo agente di intelligenza artificiale, fino ad arrivare a concetti più complessi.

Basta chiacchiere, andiamo.

Nozioni di base sugli agenti AI

Un agente AI viene creato quando diamo a un modello linguistico di grandi dimensioni (LLM) la capacità di interagire con gli strumenti ed eseguire azioni che ci sono utili. Invece di essere solo un chatbot, ora può pianificare appuntamenti, gestire il nostro calendario, fare ricerche su Internet, scrivere post sui social media e molto altro ancora... Questa trasformazione lo rende un assistente digitale a tutti gli effetti.

Gli agenti basati sull'intelligenza artificiale possono svolgere funzioni utili, non solo chattare.

Ma come possiamo attribuire questo potere a un modello linguistico di grandi dimensioni (LLM)?

La risposta più semplice è utilizzare un'API per interagire con il modello linguistico più ampio. Al giorno d'oggi sono disponibili molti pacchetti Python per questo scopo. Se seguite il mio blog, vedrete che ho già sperimentato un paio di pacchetti per la creazione di agenti: Langchain, Agno (in precedenza Phidata) e CrewAI, ad esempio. Per questa serie, mi atterrò ad Agno[1].

Per prima cosa, configura un ambiente virtuale utilizzando uv Oppure Anaconda o il tuo processore ambientale preferito. Quindi, installa i pacchetti.

# Agno AI
pip install agno

# module to interact with Gemini
pip install google-generativeai

# Install these other packages that will be needed throughout the tutorial
 pip install agno groq lancedb sentence-transformers tantivy youtube-transcript-api

Una breve nota prima di continuare. Non dimenticare di ottenere la tua chiave API Google Gemini [2].

Creare un proxy semplice è molto semplice. Tutti i pacchetti sono molto simili. Hanno una classe. Agent Oppure qualcosa di simile che ci consenta di selezionare un modello e di iniziare a interagire con il modello linguistico più ampio da noi scelto. Ecco i componenti principali di questa categoria:

  • model:Connettiti al modello linguistico di grandi dimensioni. Qui sceglieremo tra OpenAI, Gemini, Llama, Deepseek, ecc.
  • descriptionQuesto parametro ci permette di descrivere il comportamento dell'agente. Questo viene aggiunto a system_message, che è un mezzo simile.
  • instructionsMi piace pensare all'agente come a un dipendente o a un assistente che gestiamo. Per portare a termine un compito, dobbiamo dare istruzioni su cosa fare. Qui puoi farlo.
  • expected_outputQui possiamo fornire istruzioni sul risultato previsto.
  • toolsQuesto è ciò che rende un modello linguistico di grandi dimensioni un agente, consentendogli di interagire con il mondo reale utilizzando questi strumenti.

Ora creiamo un agente semplice che non ha strumenti, ma che servirà a sviluppare la nostra intuizione sulla struttura del codice.

# Imports
from agno.agent import Agent
from agno.models.google import Gemini
import os

# Create agent
agent = Agent(
    model= Gemini(id="gemini-1.5-flash",
                  api_key = os.environ.get("GEMINI_API_KEY")),
    description= "An assistant agent",
    instructions= ["Be sucint. Answer in a maximum of 2 sentences."],
    markdown= True
    )

# Run agent
response = agent.run("What's the weather like in NYC in May?")

# Print response
print(response.content)

## ...

A New York nel mese di maggio si possono prevedere temperature moderate, solitamente dai primi 10 ai 21 °C. C'è il rischio di pioggia, quindi è consigliabile indossare strati di vestiti e portare un ombrello.

Questo è fantastico. Utilizziamo il modello Gemini 1.5. Osserva come risponde in base ai dati su cui è stato addestrato. Se gli chiediamo di dirci che tempo fa oggi, ci risponderà che non può accedere a Internet.

Andiamo ad analizzare i mediatori. instructions e expected_output. Ora vogliamo una tabella con il mese, la stagione e la temperatura media di New York City (NYC).

# Imports
from agno.agent import Agent
from agno.models.google import Gemini
import os

# Create agent
agent = Agent(
    model= Gemini(id="gemini-1.5-flash",
                  api_key = os.environ.get("GEMINI_API_KEY")),
    description= "An assistant agent",
    instructions= ["Be sucint. Return a markdown table"],
    expected_output= "A table with month, season and average temperature",	
    markdown= True
    )

# Run agent
response = agent.run("What's the weather like in NYC for each month of the year?")

# Print response
print(response.content)

Ed ecco il risultato.

ا stagione Temperatura media (°F)
Gennaio inverno 32
Febbraio inverno 35
Marzo la primavera 44
Aprile la primavera 54
Maggio la primavera 63
Giugno l'estate 72
Luglio l'estate 77
Agosto l'estate 76
Settembre L'autunno 70
Ottobre L'autunno 58
Novembre L'autunno 48
Dicembre inverno 37

Utensili

Le risposte di cui sopra sono valide, ma ovviamente non vogliamo usare modelli linguistici di grandi dimensioni (LLM) per interagire con un chatbot o raccontarci vecchie notizie, giusto?

Vogliamo che sia un ponte verso l'automazione, la produttività e la conoscenza. Quindi aggiungerai Utensili capacità ai nostri agenti di intelligenza artificiale, costruendo così un ponte con il mondo reale. Esempi comuni di agenti includono: la ricerca sul Web, l'esecuzione di SQL, l'invio di e-mail o la chiamata di API.

Ma non solo: possiamo creare funzionalità personalizzate per i nostri agenti utilizzando qualsiasi funzione Python come strumento, aprendo così ampie possibilità di integrazione con sistemi e processi diversi.

Utensili Sono funzioni che un agente può eseguire per portare a termine dei compiti.

In termini di codice, aggiungere un widget a un agente è semplicemente una questione di utilizzo del middleware. tools Nella categoria Agent.

Immagina un'impresa individuale (un'attività gestita da una sola persona) nel settore della salute e del benessere che desidera automatizzare la creazione dei propri contenuti. Questa persona pubblica ogni giorno consigli su sane abitudini. So per certo che creare contenuti non è così semplice come sembra. Richiede creatività, ricerca e capacità di copywriting. Quindi, se è possibile automatizzare almeno una parte di questo processo, si risparmia tempo.

Quindi, scriviamo questo codice per creare un agente molto semplice in grado di creare un semplice post di Instagram e salvarlo in un file Markdown per la revisione. Abbiamo ridotto il processo da pensare > ricercare > scrivere > rivedere > pubblicare a rivedere > pubblicare.

# Imports
import os
from agno.agent import Agent
from agno.models.google import Gemini
from agno.tools.file import FileTools

# Create agent
agent = Agent(
    model= Gemini(id="gemini-1.5-flash",
                  api_key = os.environ.get("GEMINI_API_KEY")),
                  description= "You are a social media marketer specialized in creating engaging content.",
                  tools=[FileTools(
                      read_files=True, 
                      save_files=True
                      )],
                  show_tool_calls=True)

# Writing and saving a file
agent.print_response("""Write a short post for instagram with tips and tricks
                        that positions me as an authority in healthy eating 
                        and save it to a file named 'post.txt'.""",
                     markdown=True)

Il risultato è quanto segue.

Sprigiona la tua energia positiva mangiando sano:

1. Dare priorità agli alimenti integrali: mangiare molta frutta, verdura, proteine ​​magre e cereali integrali. Sono ricchi di sostanze nutritive e ti fanno sentire sazio ed energico.

2. Mangia consapevolmente: presta attenzione ai segnali di fame e sazietà del tuo corpo. Evitate distrazioni mentre mangiate.

3. Bere molta acqua: l'acqua è essenziale per la digestione, i livelli di energia e la salute generale..

4. Non privarti di nulla: concediti qualche dolcetto ogni tanto. La privazione può portare a mangiare troppo in seguito. Godetevi tutto con moderazione!

5. Pianifica in anticipo: prepara i pasti o gli spuntini in anticipo per evitare di prendere decisioni poco salutari.

#AlimentazioneSana #StileDiVitaSano #Nutrizione #AmantiDelCibo #SaluteEBenessere #ConsigliSani #AlimentazioneSana #PerditaDiPeso #RicetteSane #ConsigliNutrizionali #SaluteImmediata #CiboSano #AlimentazioneConsapevole #PercorsoSano #HealthCoach

Certo, potremmo complicare ulteriormente le cose creando una squadra con altri agenti che si occupino di cercare contenuti nell'elenco dei siti web, un revisore e verificatore dei contenuti e un altro che crei un'immagine per il post. Ma penso che tu abbia capito l'idea generale di come aggiungere tool per me Agent.

Un altro tipo di strumento che possiamo aggiungere è: uno strumento strumento di funzione. Possiamo utilizzare una funzione Python come strumento per un modello linguistico di grandi dimensioni (LLM). Non dimenticare di aggiungere suggerimenti sul tipo, come: video_id:str, quindi il modello sa cosa usare come input per la funzione. In caso contrario, potrebbe essere visualizzato un errore.

Vediamo brevemente come funziona.

Ora vogliamo che il nostro agente sia in grado di ottenere uno specifico video di YouTube e di riassumerlo. Per svolgere tale compito, creiamo semplicemente una funzione che scarica la trascrizione del video da YT e la passa al modello per la sintesi.

# Imports
import os
from agno.agent import Agent
from agno.models.google import Gemini
from youtube_transcript_api import YouTubeTranscriptApi

# Get YT transcript
def get_yt_transcript(video_id:str) -> str:
      
    """
    Use this function to get the transcript from a YouTube video using the video id.

    Parameters
    ----------
    video_id : str
        The id of the YouTube video.
    Returns
    -------
    str
        The transcript of the video.
    """

    # Instantiate
    ytt_api = YouTubeTranscriptApi()
    # Fetch
    yt = ytt_api.fetch(video_id)
    # Return
    return ''.join([line.text for line in yt])

# Create agent
agent = Agent(
    model= Gemini(id="gemini-1.5-flash",
                  api_key = os.environ.get("GEMINI_API_KEY")),
                  description= "You are an assistant that summarizes YouTube videos.",
                  tools=[get_yt_transcript],
                  expected_output= "A summary of the video with the 5 main points and 2 questions for me to test my understanding.",
                  markdown=True,
                  show_tool_calls=True)

# Run agent
agent.print_response("""Summarize the text of the video with the id 'hrZSfMly_Ck' """,
                     markdown=True)

Quindi ottieni un risultato.

Agenti con capacità di ragionamento

Un'altra ottima opzione offerta da Agno è la possibilità di creare agenti in grado di analizzare una situazione prima di rispondere a una domanda. Questo è lo strumento di ragionamento. verificare Tipi di agenti di intelligenza artificiale e loro utilizzo: una spiegazione dettagliata.

Creeremo un agente di ragionamento utilizzando il modello Qwen-qwq-32b di Alibaba. Da notare che l'unica differenza qui, oltre al modello, è che stiamo aggiungendo il widget. ReasoningTools(). Questo strumento consente all'agente di pensare in modo logico prima di fornire risposte.

Proprietà significa adding_instructions=True Fornire all'agente istruzioni dettagliate, migliorando l'affidabilità e la precisione dell'utilizzo dello strumento. Impostando questa proprietà si otterrà quanto segue: False Costringere l'agente a fare affidamento sul proprio ragionamento, che potrebbe essere più soggetto a errori. Ciò consente di valutare in modo indipendente le capacità del modello.

# Imports
import os
from agno.agent import Agent
from agno.models.groq import Groq
from agno.tools.reasoning import ReasoningTools

# Create agent with reasoning
agent = Agent(
    model= Groq(id="qwen-qwq-32b",
                  api_key = os.environ.get("GROQ_API_KEY")),
                  description= "You are an experienced math teacher.",
                  tools=[ReasoningTools(add_instructions=True)],
                  show_tool_calls=True)

# Writing and saving a file
agent.print_response("""Explain the concept of sin and cosine in simple terms.""",
                     stream=True,
                     show_full_reasoning=True,
                     markdown=True)

Di seguito sono riportati i risultati.

agente fornito dalla conoscenza

Questo strumento rappresenta il modo più semplice per creare un sistema RAG (Recovery Augmented Generation). Con questa funzionalità puoi indirizzare l'agente a un sito web o a un elenco di siti web, il cui contenuto verrà aggiunto a un database vettoriale. Dopodiché il contenuto diventa ricercabile. Se richiesto, l'agente può utilizzare il contenuto come parte della risposta. Questa tecnologia migliora l'accuratezza e l'affidabilità delle risposte dell'intelligenza artificiale.

In questo semplice esempio, ho aggiunto una pagina del mio sito web e ho chiesto all'agente quali libri fossero elencati lì. In questo modo viene spiegato come l'agente può accedere alle informazioni e utilizzarle.

# Imports
import os
from agno.agent import Agent
from agno.models.google import Gemini
from agno.knowledge.url import UrlKnowledge
from agno.vectordb.lancedb import LanceDb, SearchType
from agno.embedder.sentence_transformer import SentenceTransformerEmbedder

# Load webpage to the knowledge base
agent_knowledge = UrlKnowledge(
    urls=["https://gustavorsantos.me/?page_id=47"],
    vector_db=LanceDb(
        uri="tmp/lancedb",
        table_name="projects",
        search_type=SearchType.hybrid,
        # Use Sentence Transformer for embeddings
        embedder=SentenceTransformerEmbedder(),
    ),
)

# Create agent
agent = Agent(
    model=Gemini(id="gemini-2.0-flash", api_key=os.environ.get("GEMINI_API_KEY")),
    instructions=[
        "Use tables to display data.",
        "Search your knowledge before answering the question.",
        "Only inlcude the content from the agent_knowledge base table 'projects'",
        "Only include the output in your response. No other text.",
    ],
    knowledge=agent_knowledge,
    add_datetime_to_instructions=True,
    markdown=True,
)

if __name__ == "__main__":
    # Load the knowledge base, you can comment out after first run
    # Set recreate to True to recreate the knowledge base if needed
    agent.knowledge.load(recreate=False)
    agent.print_response(
        "What are the two books listed in the 'agent_knowledge'",
        stream=True,
        show_full_reasoning=True,
        stream_intermediate_steps=True,
    )

Agente abilitato alla memoria

L'ultimo tipo di agente che tratteremo in questo articolo è quello con memoria abilitata, un concetto fondamentale nel campo degli agenti di intelligenza artificiale.

Questo tipo di agente ha la capacità di memorizzare e recuperare informazioni sugli utenti dalle interazioni precedenti, il che gli consente di comprendere le preferenze degli utenti e di personalizzare le proprie risposte. Questa memoria rende l'agente più efficace nelle interazioni successive.

Vediamo questo esempio in cui dirò all'agente alcune cose e chiederò dei consigli basati su quell'interazione. Ciò dimostra come un agente con memoria abilitata può migliorare l'esperienza dell'utente.

# imports
import os
from agno.agent import Agent
from agno.memory.v2.db.sqlite import SqliteMemoryDb
from agno.memory.v2.memory import Memory
from agno.models.google import Gemini
from rich.pretty import pprint

# User Name
user_id = "data_scientist"

# Creating a memory database
memory = Memory(
    db=SqliteMemoryDb(table_name="memory", 
                      db_file="tmp/memory.db"),
    model=Gemini(id="gemini-2.0-flash", 
                 api_key=os.environ.get("GEMINI_API_KEY"))
                 )

# Clear the memory before start
memory.clear()

# Create the agent
agent = Agent(
    model=Gemini(id="gemini-2.0-flash", api_key=os.environ.get("GEMINI_API_KEY")),
    user_id=user_id,
    memory=memory,
    # Enable the Agent to dynamically create and manage user memories
    enable_agentic_memory=True,
    add_datetime_to_instructions=True,
    markdown=True,
)

# Run the code
if __name__ == "__main__":
    agent.print_response("My name is Gustavo and I am a Data Scientist learning about AI Agents.")
    memories = memory.get_user_memories(user_id=user_id)
    print(f"Memories about {user_id}:")
    pprint(memories)
    agent.print_response("What topic should I study about?")
    agent.print_response("I write articles for Towards Data Science.")
    print(f"Memories about {user_id}:")
    pprint(memories)
    agent.print_response("Where should I post my next article?")

Con questo concludiamo questo primo articolo su Agenti di intelligenza artificiale. Ci auguriamo che questo articolo abbia fornito una panoramica utile dei diversi tipi di agenti di intelligenza artificiale.

قبل المغادرة

Questo articolo contiene molte informazioni. Abbiamo compiuto il primo passo nel percorso di apprendimento degli agenti AI. So che può creare confusione: ci sono così tante informazioni in giro che può essere difficile sapere da dove iniziare e cosa studiare.

Il mio suggerimento è di seguire lo stesso percorso che sto seguendo io. Un passo alla volta, scegli solo alcuni pacchetti come Agno e CrewAI, approfondiscili e impara a creare agenti ogni volta più complessi. Questo approccio graduale è il migliore per comprendere concetti complessi dell'intelligenza artificiale.

In questo articolo siamo partiti da zero, imparando come interagire semplicemente con un modello linguistico di grandi dimensioni (LLM), per arrivare alla creazione di agenti dotati di memoria o addirittura alla creazione di un semplice sistema di aumento del recupero (RAG) per un agente di intelligenza artificiale. Queste competenze di base sono essenziali per comprendere il funzionamento degli agenti di intelligenza artificiale.

Ovviamente, con un solo agente si possono fare moltissime cose. Per esempi avanzati, consultare il riferimento [4].

Con queste semplici competenze sarai sicuramente più avanti di molte altre persone e ci sono già moltissime cose che puoi fare. Usate la vostra creatività, perché no? Chiedi aiuto a un grande modello linguistico per costruire qualcosa di fantastico! Utilizza gli strumenti di intelligenza artificiale per migliorare la tua creatività.

Nel prossimo articolo approfondiremo gli agenti di intelligenza artificiale e la loro valutazione. Restate sintonizzati!

Archivio GitHub

https://github.com/gurezende/agno-ai-labs

Riferimenti

[1] https://docs.agno.com/introduction

[2] https://ai.google.dev/gemini-api/docs

[3] https://pypi.org/project/youtube-transcript-api/

[4] https://github.com/agno-agi/agno/tree/main/cookbook

[5] https://docs.agno.com/introduction/agents#agent-with-knowledge

I commenti sono chiusi.