Tutorial CrewAI

Tutorial CrewAI

27 Maggio 2024 Articoli di Intelligenza Artificiale 0
crewai

In questo articolo, esploreremo in profondità il framework CrewAI, dividendo la nostra analisi del Tutorial CrewAI in due sezioni principali:

  1. Introduzione al framework Crew AI: Una panoramica che vi introdurrà alle caratteristiche e ai vantaggi di CrewAI.
  2. Funzionamento e componenti principali del framework: Un esame dettagliato delle funzionalità chiave e dei meccanismi interni di CrewAI.

Seguiteci in questo viaggio per scoprire come CrewAI può trasformare i vostri progetti e liberare la vostra creatività.

Introduzione al framework Crew AI

Potresti chiederti: cos’è Crew AI e quali sono le sue applicazioni pratiche?

Crew AI è un framework progettato per creare agenti AI specializzati, ognuno con un set specifico di istruzioni, che collaborano per risolvere problemi complessi. Questo strumento può essere utilizzato per una varietà di compiti, come scegliere azioni in cui investire, pianificare vacanze, sviluppare giochi in Python e molto altro.

Per comprendere meglio le potenzialità di Crew AI, esamineremo insieme tre esempi pratici del suo utilizzo.

1. Tutorial CrewAI: Analista di Borsa

Il primo esempio riguarda un analista di borsa. Questo agente si occupa di ricercare informazioni su una società e compilare un rapporto dettagliato che ci indica se conviene comprare, mantenere o vendere le azioni. L’analista esplora il web alla ricerca di report, costruisce una memoria interna delle informazioni rilevanti e continua a fare ricerche approfondite, inclusi i report trimestrali. Alla fine, produce un rapporto che ci consiglia di mantenere le azioni di Tesla, fornendo indicatori positivi, preoccupazioni e eventi futuri che potrebbero influenzare la valutazione delle azioni. Questo processo, che manualmente richiederebbe ore, viene completato in soli sette minuti e mezzo grazie a Crew AI.

2. Tutorial CrewAI: il Pianificatore di Viaggi

Uno degli esempi più entusiasmanti di Crew AI è il pianificatore di viaggi. Funziona in modo molto semplice: gli comunichi il punto di partenza e la destinazione, le tue preferenze per il viaggio e il periodo in cui intendi partire. Da lì, il sistema utilizza tre agenti per organizzare il tuo itinerario.

  1. Selezione delle Città: Un agente si occupa di scegliere le città che visiterai.
  2. Attività da Svolgere: Un secondo agente trova le attività più interessanti da fare in ogni città selezionata.
  3. Pianificazione dell’Itinerario: Il terzo agente, una sorta di mastermind, collega tutte le tappe del viaggio, ricercando voli, alloggi e pianificando il budget.

Alla fine, il pianificatore genera un rapporto dettagliato che include un itinerario di sette giorni per novembre (periodo selezionato in input). Questo documento ti indica giorno per giorno cosa fare, ottimizzando il tempo a disposizione e includendo eventi speciali come festival locali. Ad esempio, ha scoperto un grande festival in Thailandia, pianificando l’intero viaggio attorno a questo evento per massimizzare l’esperienza. Questo tipo di pianificazione richiederebbe ore di ricerca manuale, ma Crew AI lo realizza in pochi minuti.

3. Tutorial CrewAI: il Costruttore di Giochi

Il terzo esempio è il costruttore di giochi, un’altra applicazione straordinaria di Crew AI. Qui, tutto inizia con una semplice descrizione del tipo di gioco che desideri creare. Nel nostro caso, abbiamo deciso di sviluppare il classico gioco Pong. Dopo aver fornito una descrizione delle meccaniche del gioco, tre agenti si mettono all’opera:

  1. Codifica del Gioco: Un agente scrive il codice del gioco.
  2. Revisione del Codice: Un altro agente revisiona e migliora il codice scritto.
  3. Iterazione e Miglioramento: Il terzo agente continua a iterare e migliorare il codice fino a ottenere una versione valida.

Il risultato finale è il codice necessario per eseguire il gioco Pong. Una volta copiato e incollato il codice nel terminale, possiamo eseguire il gioco con il comando python pong.py. Il gioco si apre in una finestra di Pygame e funziona perfettamente, il che è sorprendente considerando che creare un gioco simile manualmente, soprattutto se non si ha familiarità con Pygame, richiederebbe molto più tempo di quattro minuti.

Funzionamento e componenti principali del Framework

Ora che abbiamo visto alcuni esempi di come Crew AI può funzionare, approfondiamo il suo funzionamento, esaminando le quattro componenti principali di Crew AI:

1. Agenti Specializzati

2. Strumenti

3. Compiti / Task

4. Processo

1. Agenti

La prima componente fondamentale sono gli agenti. Gli agenti possono essere paragonati a dipendenti di un’azienda, ciascuno con un lavoro specifico da svolgere. Come scrittori, ricercatori e manager.

Questi “dipendenti” sono in grado di prendere decisioni autonomamente e collaborare condividendo informazioni e assegnandosi compiti a vicenda. Come programmatori, possiamo assegnare a ogni agente proprietà specifiche, come il ruolo, l’obiettivo, storie di background e strumenti che orientano il loro comportamento.

Un esempio concreto è il pianificatore di viaggi che abbiamo visto in precedenza. Il crew di pianificazione dei viaggi aveva tre agenti distinti: l’agente di selezione delle città, l’agente esperto locale e l’agente concierge di viaggio. Ognuno di questi agenti aveva proprietà, ruoli, obiettivi, storie di background e strumenti specifici per aiutarci a pianificare il viaggio.

from crewai import Agent
from langchain.llms import OpenAI

from tools.browser_tools import BrowserTools
from tools.calculator_tools import CalculatorTools
from tools.search_tools import SearchTools

class AgentiDiViaggio():

  def agente_selezione_città(self):
    return Agent(
        role='Esperto di Selezione delle Città',
        goal='Selezionare la migliore città in base al meteo, alla stagione e ai prezzi',
        backstory=
        'Un esperto nell'analisi dei dati di viaggio per scegliere le destinazioni ideali',
        tools=[
            SearchTools.search_internet,
            BrowserTools.scrape_and_summarize_website,
        ],
        verbose=True)

  def esperto_locale(self):
    return Agent(
        role='Esperto Locale di questa città',
        goal='Fornire le MIGLIORI informazioni sulla città selezionata',
        backstory="""Una guida locale esperta con informazioni estese
        sulla città, le sue attrazioni e le sue usanze""",
        tools=[
            SearchTools.search_internet,
            BrowserTools.scrape_and_summarize_website,
        ],
        verbose=True)

  def concierge_di_viaggio(self):
    return Agent(
        role='Concierge di Viaggio Straordinario',
        goal="""Creare gli itinerari di viaggio più straordinari con suggerimenti 
        per il budget e il bagaglio per la città""",
        backstory="""Specialista nella pianificazione e logistica dei viaggi con 
        decenni di esperienza""",
        tools=[
            SearchTools.search_internet,
            BrowserTools.scrape_and_summarize_website,
            CalculatorTools.calculate,
        ],
        verbose=True)

2. Strumenti

La seconda componente fondamentale di Crew AI sono gli strumenti. Gli strumenti sono ciò che gli agenti utilizzano per eseguire un compito specifico. Nel mondo reale, un costruttore utilizza un martello per piantare un chiodo; nel nostro caso, gli agenti possono usare strumenti per cercare informazioni su Internet o eseguire calcoli.

Esistono due tipi di strumenti: strumenti predefiniti già integrati in LangChain e strumenti personalizzati. La lista di strumenti di LangChain è vasta e comprende diverse funzionalità che possiamo connettere e utilizzare.

Ecco alcuni esempi di strumenti personalizzati:

  • Strumento calcolatrice: Utilizzato dal pianificatore di viaggi per sommare le spese di voli, biglietti e escursioni.
from langchain.tools import tool

class StrumentiCalcolatrice():

    @tool("Effettua un calcolo")
    def calcola(operazione):
        """Utile per eseguire qualsiasi calcolo matematico,
        come somma, sottrazione, moltiplicazione, divisione, ecc.
        L'input per questo strumento dovrebbe essere un'espressione
        matematica, un paio di esempi sono `200*7` o `5000/2*10`
        """
        try:
            return eval(operazione)
        except SyntaxError:
            return "Errore: Sintassi non valida nell'espressione matematica"
  • Strumento di ricerca: Utilizzato sia nel pianificatore di viaggi sia nell’analisi delle azioni per raccogliere informazioni da Internet.
import json
import os

import requests
from langchain.tools import tool


class StrumentiRicerca():

  @tool("Cerca su internet")
  def cerca_su_internet(query):
    """Utile per cercare su internet
    un dato argomento e restituire risultati rilevanti"""
    numero_risultati_da_restituire = 4
    url = "https://google.serper.dev/search"
    payload = json.dumps({"q": query})
    headers = {
        'X-API-KEY': os.environ['SERPER_API_KEY'],
        'content-type': 'application/json'
    }
    response = requests.request("POST", url, headers=headers, data=payload)
    # verifica se c'è una chiave "organic"
    if 'organic' not in response.json():
      return "Spiacente, non sono riuscito a trovare nulla a riguardo. Potrebbe esserci un errore con la tua chiave API di Serper."
    else:
      results = response.json()['organic']
      stringa = []
      for result in results[:numero_risultati_da_restituire]:
        try:
          stringa.append('\n'.join([
              f"Titolo: {result['title']}", f"Link: {result['link']}",
              f"Snippet: {result['snippet']}", "\n-----------------"
          ]))
        except KeyError:
          continue

      return '\n'.join(stringa)

3. Compiti / Task

La terza componente fondamentale di Crew AI sono i compiti. I compiti sono essenzialmente lavori o incarichi che gli agenti AI devono completare. Questi definiscono cosa deve essere fatto e possono includere informazioni aggiuntive come quale agente deve svolgere il lavoro e quali strumenti utilizzare.

Con questi compiti, siamo in grado di definire alcune proprietà fondamentali, come una descrizione, l’agente e gli strumenti, come già accennato. Vediamo alcuni esempi di compiti per capire meglio come appaiono nel mondo reale.

Esaminando la crew di analisi delle azioni vediamo che ci sono quattro compiti sottostanti utilizzati per svolgere questo lavoro.

I quattro compiti sono:

  1. Compito di ricerca: raccoglie e riassume articoli di notizie e altre informazioni trovate su Internet.
  2. Compito di analisi finanziaria: analizza i fondamentali dell’azienda.
  3. Compito di analisi dei documenti: esamina i rapporti trimestrali e le dichiarazioni annuali rilasciate dall’azienda.
  4. Compito di raccomandazione: sintetizza tutti i dati raccolti e produce una risposta finale.
from crewai import Task
from textwrap import dedent

class CompitiAnalisiAzionaria():
  def ricerca(self, agente, azienda):
    return Task(description=dedent(f"""
        Raccogli e riassumi articoli di notizie recenti,
        comunicati stampa e analisi di mercato relative all'azione
        e alla sua industria.
        Presta particolare attenzione a eventuali eventi significativi,
        sentimenti di mercato e opinioni degli analisti. Includi anche 
        eventi imminenti come utili e altri.

        La tua risposta finale DEVE essere un rapporto che include un
        riepilogo completo delle ultime notizie, eventuali cambiamenti 
        notevoli nel sentimento del mercato e potenziali impatti 
        sull'azione.
        Assicurati anche di restituire il ticker dell'azione.
        
        {self.__sezione_suggerimenti()}
  
        Assicurati di utilizzare i dati più recenti possibili.
  
        Azienda selezionata dal cliente: {azienda}
      """),
      agent=agente
    )
    
  def analisi_finanziaria(self, agente): 
    return Task(description=dedent(f"""
        Conduci un'analisi approfondita della salute finanziaria
        dell'azione e delle sue performance di mercato. 
        Questo include l'esame di metriche finanziarie chiave come
        il rapporto P/E, la crescita dell'EPS, le tendenze delle 
        entrate e il rapporto debito/capitale. 
        Inoltre, analizza la performance dell'azione in confronto 
        ai suoi concorrenti del settore e alle tendenze generali
        del mercato.

        Il tuo rapporto finale DEVE espandere il riepilogo fornito
        includendo una valutazione chiara della situazione finanziaria 
        dell'azione, i suoi punti di forza e di debolezza, 
        e come si comporta rispetto ai suoi concorrenti nello scenario
        di mercato attuale.{self.__sezione_suggerimenti()}

        Assicurati di utilizzare i dati più recenti possibili.
      """),
      agent=agente
    )

  def analisi_degli_archivi(self, agente):
    return Task(description=dedent(f"""
        Analizza gli ultimi documenti 10-Q e 10-K da EDGAR per
        l'azione in questione. 
        Concentrati su sezioni chiave come Discussione e Analisi
        della Direzione, bilanci, attività di insider trading,
        e eventuali rischi divulgati.
        Estrai dati e approfondimenti rilevanti che potrebbero 
        influenzare la performance futura dell'azione.

        La tua risposta finale deve essere un rapporto ampliato che
        evidenzi anche i risultati significativi di questi archivi,
        inclusi eventuali segnali di allarme o indicatori positivi
        per il tuo cliente.
        {self.__sezione_suggerimenti()}        
      """),
      agent=agente
    )

  def raccomandazione(self, agente):
    return Task(description=dedent(f"""
        Esamina e sintetizza le analisi fornite dal
        Analista Finanziario e dal Ricercatore.
        Combina questi approfondimenti per formulare una
        raccomandazione di investimento completa. 
        
        DEVI considerare tutti gli aspetti, inclusa la salute
        finanziaria, il sentimento del mercato e i dati qualitativi
        degli archivi EDGAR.

        Assicurati di includere una sezione che mostri l'attività 
        di insider trading e eventi imminenti come gli utili.

        La tua risposta finale DEVE essere una raccomandazione per
        il tuo cliente. Deve essere un rapporto super dettagliato, 
        fornendo una chiara posizione e strategia di investimento 
        con prove a supporto.
        Rendilo bello e ben formattato per il tuo cliente.
        {self.__sezione_suggerimenti()}
      """),
      agent=agente
    )

  def __sezione_suggerimenti(self):
    return "Se fai il tuo MIGLIOR LAVORO, ti darò una commissione di $10.000!"

Noterai che ciascuno di questi compiti specifica quale agente deve svolgere il lavoro. Tuttavia, non abbiamo specificato quali strumenti l’agente deve utilizzare. Qui entra in gioco una parte della magia di Crew AI: gli agenti determinano autonomamente quali strumenti usare per completare il loro compito.

Crew AI solleva gran parte del lavoro pesante per noi, ma è importante capire come appaiono questi compiti “sotto il cofano” quando vengono definiti.

4. Processi

La quarta e ultima componente fondamentale di Crew AI è il processo. Il processo è la parte più importante perché definisce come gli agenti lavoreranno insieme, come i compiti verranno assegnati a ciascun agente e come coordinare il lavoro tra gli agenti. Per ora, il processo garantisce che il lavoro venga svolto in modo sequenziale: ogni agente svolge il proprio compito e poi il lavoro viene passato all’agente successivo. In futuro, verranno aggiunti processi gerarchici e altre modalità, ma per ora, è sufficiente sapere che il processo assicura che il lavoro venga svolto in ordine sequenziale.

Bene, siamo giunti alla conclusione della panoramica su CrewAI e sui suoi principali componenti. Restate sintonizzati, perché presto arriverà un articolo in cui vi spiegheremo come costruire un progetto simile, permettendovi di sbizzarrirvi con la vostra creatività.

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *