Der Self-Action-AI-Leitfaden: Beginnen Sie Ihre Reise zum Erstellen von KI-Agenten

Erfahren Sie die Grundlagen zur Erstellung von KI-Agenten. Entdecken Sie die Tools und Techniken, die zum Entwerfen und Implementieren dieser intelligenten Systeme erforderlich sind.

Die Branche der künstlichen Intelligenz erlebt eine rasante Entwicklung. Es ist beeindruckend und oft verwirrend.

Ich habe diesen Bereich der Datenwissenschaft studiert, gelernt und meine Grundlagen darin aufgebaut, weil ich glaube, dass die Zukunft der Datenwissenschaft eng mit der Entwicklung der generativen KI verknüpft ist.

Es kommt mir vor, als wäre es gestern gewesen, als ich mein erstes KI-AgentUnd zwei Wochen später gab es viele Python-Pakete zur Auswahl, ganz zu schweigen von No-Code-Optionen, die sehr gut funktionierten, wie zum Beispiel n8n.

Von einfachen Modellen, die mit uns chatten können, bis hin zu einer Flut von KI-Agenten, die überall präsent sind, das Internet durchsuchen, Dateien verarbeiten und Projekte ausführen. Datenwissenschaft Der gesamte Prozess (von der ersten Datenerkundung bis hin zur Modellierung und Auswertung) dauerte nur wenige Jahre.

ماذا؟

Als ich das alles sah, dachte ich: „Ich muss so schnell wie möglich beitreten.“. Letztendlich ist es besser, auf der Welle zu reiten, als von ihr verschluckt zu werden.

Aus diesem Grund habe ich beschlossen, diese Reihe von Beiträgen zu starten, in denen ich von den Grundlagen über die Erstellung unseres ersten KI-Agenten bis hin zu komplexeren Konzepten vorgehen möchte.

Genug geredet, lasst uns loslegen.

Grundlagen zu KI-Agenten

Ein KI-Agent entsteht, wenn wir einem großen Sprachmodell (LLM) die Möglichkeit geben, mit Tools zu interagieren und Aktionen auszuführen, die für uns nützlich sind. Anstatt nur ein Chatbot zu sein, kann er jetzt Termine planen, unseren Kalender verwalten, im Internet suchen, Social-Media-Beiträge schreiben und so weiter. Diese Transformation macht ihn zu einem vollwertigen digitalen Assistenten.

KI-gestützte Agenten können nicht nur chatten, sondern auch nützliche Dinge tun.

Aber wie können wir einem großen Sprachmodell (LLM) diese Leistung verleihen?

Die einfache Antwort besteht darin, eine API zur Interaktion mit dem großen Sprachmodell zu verwenden. Heutzutage gibt es hierfür viele Python-Pakete. Wenn Sie meinem Blog folgen, werden Sie sehen, dass ich bereits mit einigen Paketen zum Erstellen von Agenten experimentiert habe: beispielsweise Langchain, Agno (früher Phidata) und CrewAI. Für diese Serie bleibe ich bei Agno[1].

Richten Sie zunächst eine virtuelle Umgebung ein mit uv Oder Anaconda oder Ihr bevorzugter Umgebungsprozessor. Installieren Sie als Nächstes die Pakete.

# 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

Eine kurze Anmerkung, bevor wir fortfahren. Vergessen Sie nicht, Ihren Google Gemini API-Schlüssel [2] abzurufen.

Das Erstellen eines einfachen Proxys ist sehr einfach. Alle Pakete sind sehr ähnlich. Sie haben eine Klasse. Agent Oder etwas Ähnliches, das es uns ermöglicht, ein Modell auszuwählen und mit dem größeren Sprachmodell unserer Wahl zu interagieren. Hier sind die Hauptkomponenten dieser Kategorie:

  • model:Verbindung zum großen Sprachmodell herstellen. Hier wählen wir zwischen OpenAI, Gemini, Llama, Deepseek usw.
  • descriptionMit diesem Parameter können wir das Verhalten des Agenten beschreiben. Dies wird hinzugefügt zu system_message, ein ähnliches Medium.
  • instructionsIch stelle mir einen Agenten gerne als einen Angestellten oder Assistenten vor, den wir verwalten. Um eine Aufgabe zu erfüllen, müssen wir Anweisungen geben, was zu tun ist. Hier können Sie es tun.
  • expected_outputHier können wir Hinweise zum erwarteten Ergebnis geben.
  • toolsDies macht ein großes Sprachmodell zu einem Agenten, der mithilfe dieser Tools mit der realen Welt interagieren kann.

Erstellen wir nun einen einfachen Agenten, der über keine Tools verfügt, aber dazu dient, unser Gespür für die Codestruktur zu entwickeln.

# 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)

## ...

Im Mai sind in New York gemäßigte Temperaturen zu erwarten, die normalerweise zwischen 10 und 24 Grad Celsius liegen. Es besteht die Möglichkeit von Regen, daher ist es ratsam, mehrere Schichten Kleidung und einen Regenschirm zu tragen.

Das ist großartig. Wir verwenden das Modell Gemini 1.5. Beachten Sie, wie es auf der Grundlage der Daten reagiert, mit denen es trainiert wurde. Wenn wir ihn bitten, uns das heutige Wetter mitzuteilen, erhalten wir als Antwort, dass er keinen Internetzugang hat.

Lassen Sie uns die Mediatoren untersuchen. instructions Und expected_output. Wir möchten nun eine Tabelle mit Monat, Jahreszeit und Durchschnittstemperatur für 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)

Und das ist das Ergebnis.

الشهر. Jahreszeit Durchschnittstemperatur (°F)
Januar Winter 32
Februar Winter 35
März der Frühling 44
April der Frühling 54
Mai der Frühling 63
Juni الصيف 72
July الصيف 77
August الصيف 76
September Der Herbst 70
Oktober Der Herbst 58
November Der Herbst 48
Dezember Winter 37

Werkzeuge

Die obigen Antworten sind gut, aber wir möchten natürlich keine leistungsstarken großen Sprachmodelle (LLMs) verwenden, um mit einem Chatbot zu spielen oder uns alte Neuigkeiten zu erzählen, oder?

Wir möchten, dass es eine Brücke zu Automatisierung, Produktivität und Wissen bildet. Sie werden also hinzufügen Werkzeuge Fähigkeiten unserer KI-Agenten und bauen so eine Brücke zur realen Welt. Gängige Beispiele für Agenten sind: Durchsuchen des Webs, Ausführen von SQL, Senden von E-Mails oder Aufrufen von APIs.

Darüber hinaus können wir mithilfe beliebiger Python-Funktionen als Tool benutzerdefinierte Funktionen für unsere Agenten erstellen, wodurch sich umfangreiche Möglichkeiten zur Integration in verschiedene Systeme und Prozesse eröffnen.

Werkzeuge Es handelt sich dabei um Funktionen, die ein Agent ausführen kann, um Aufgaben zu erledigen.

In Bezug auf den Code ist das Hinzufügen eines Widgets zu einem Agenten lediglich eine Frage der Verwendung der Middleware. tools In der Kategorie Agent.

Stellen Sie sich ein Einzelunternehmen (Ein-Personen-Unternehmen) im Gesundheits- und Wellnessbereich vor, das seine Inhaltserstellung automatisieren möchte. Diese Person postet täglich Tipps zu gesunden Gewohnheiten. Ich weiß, dass das Erstellen von Inhalten nicht so einfach ist, wie es scheint. Es erfordert Kreativität, Recherche und Fähigkeiten im Verfassen von Werbetexten. Wenn es also automatisiert werden kann, oder zumindest ein Teil davon, spart es Zeit.

Also schreiben wir diesen Code, um einen sehr einfachen Agenten zu erstellen, der einen einfachen Instagram-Beitrag erstellen und ihn zur Überprüfung in einer Markdown-Datei speichern kann. Wir haben den Prozess von Denken > Recherchieren > Schreiben > Überprüfen > Veröffentlichen auf Überprüfen > Veröffentlichen reduziert.

# 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)

Als Ergebnis haben wir Folgendes.

Entfesseln Sie Ihre positive Energie durch gesunde Ernährung:

1. Vollwertkost den Vorzug geben: Essen Sie viel Obst, Gemüse, mageres Eiweiß und Vollkornprodukte. Sie sind reich an Nährstoffen und sorgen für ein Sättigungsgefühl und Energie.

2. Bewusst essen: Achten Sie auf die Hunger- und Sättigungssignale Ihres Körpers. Vermeiden Sie Ablenkungen beim Essen.

3. Trinken Sie viel Wasser: Wasser ist wichtig für die Verdauung, das Energieniveau und die allgemeine Gesundheit..

4. Verzichten Sie nicht: Gönnen Sie sich zwischendurch auch mal etwas Süßes. Mangel kann später zu übermäßigem Essen führen. Genießen Sie alles in Maßen!

5. Planen Sie im Voraus: Bereiten Sie Ihre Mahlzeiten oder Snacks im Voraus zu, um ungesunde Entscheidungen zu vermeiden.

#GesundeErnährung #GesunderLebensstil #Ernährung #FoodLovers #GesundheitUndWohlbefinden #GesundeTipps #CleanEating #Gewichtsverlust #GesundeRezepte #Ernährungstipps #SofortigeGesundheit #GesundesEssen #BewusstesEssen #GesundeReise #Gesundheitscoach

Natürlich könnten wir es komplizierter machen, indem wir ein Team mit anderen Agenten bilden, die die Liste der Websites nach Inhalten durchsuchen, einem Inhaltsprüfer und -prüfer und einem weiteren, der ein Bild für den Beitrag erstellt. Aber ich denke, Sie haben eine allgemeine Vorstellung davon, wie Sie hinzufügen tool إلى Agent.

Ein weiterer Werkzeugtyp, den wir hinzufügen können, ist: ein Werkzeug Funktionswerkzeug. Wir können eine Python-Funktion als Tool für ein großes Sprachmodell (LLM) verwenden. Vergessen Sie nicht, Typhinweise wie die folgenden hinzuzufügen: video_id:str, damit das Modell weiß, was als Eingabe für die Funktion verwendet werden soll. Andernfalls wird möglicherweise ein Fehler angezeigt.

Sehen wir uns kurz an, wie das funktioniert.

Wir möchten nun, dass unser Agent ein bestimmtes YouTube-Video abrufen und zusammenfassen kann. Um eine solche Aufgabe auszuführen, erstellen wir einfach eine Funktion, die das Videotranskript von YT herunterlädt und es zur Zusammenfassung an das Modell weiterleitet.

# 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)

Dann erhalten Sie ein Ergebnis.

Agenten mit der Fähigkeit zum logischen Denken

Eine weitere großartige Option, die Agno bietet, ist die Möglichkeit, Agenten zu erstellen, die eine Situation analysieren können, bevor sie eine Frage beantworten. Dies ist das Argumentationswerkzeug. verifizieren Arten von KI-Agenten und ihre Verwendung: Eine detaillierte Erklärung.

Wir werden einen Schlussfolgerungsagenten mithilfe des Qwen-qwq-32b-Modells von Alibaba erstellen. Beachten Sie, dass der einzige Unterschied hier neben dem Modell darin besteht, dass wir das Widget hinzufügen. ReasoningTools(). Dieses Tool ermöglicht es dem Agenten, logisch zu denken, bevor er Antworten gibt.

Eigentum bedeutet adding_instructions=True Geben Sie dem Agenten detaillierte Anweisungen, um die Zuverlässigkeit und Genauigkeit seiner Verwendung des Tools zu verbessern. Das Festlegen dieser Eigenschaft führt zu: False Der Agent wird gezwungen, sich auf seine eigene Argumentation zu verlassen, die möglicherweise fehleranfälliger ist. Dadurch können die Fähigkeiten des Modells unabhängig bewertet werden.

# 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)

Nachfolgend sind die Ausgaben aufgeführt.

wissensbasierter Agent

Mit diesem Tool können Sie am einfachsten ein Recovery Augmented Generation (RAG)-System erstellen. Mit dieser Funktion können Sie den Agenten auf eine Website oder eine Liste von Websites weiterleiten und er fügt den Inhalt einer Vektordatenbank hinzu. Danach ist der Inhalt durchsuchbar. Bei entsprechender Aufforderung kann der Agent den Inhalt als Teil der Antwort verwenden. Diese Technologie verbessert die Genauigkeit und Zuverlässigkeit der KI-Antworten.

In diesem einfachen Beispiel habe ich eine Seite meiner Website hinzugefügt und den Agenten gefragt, welche Bücher dort aufgeführt sind. Hier wird erläutert, wie der Agent auf die Informationen zugreifen und sie verwenden kann.

# 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,
    )

Speicherfähiger Agent

Der letzte Typ, den wir in diesem Artikel behandeln, ist der speicherfähige Agent, ein grundlegendes Konzept im Bereich der KI-Agenten.

Dieser Agententyp kann Informationen über Benutzer aus früheren Interaktionen speichern und abrufen. Dadurch kann er die Benutzerpräferenzen verstehen und seine Antworten personalisieren. Dieses Gedächtnis macht den Agenten bei nachfolgenden Interaktionen effektiver.

Sehen wir uns dieses Beispiel an, in dem ich dem Agenten einige Dinge erzähle und auf der Grundlage dieser Interaktion um Empfehlungen bitte. Dies zeigt, wie ein speicherfähiger Agent das Benutzererlebnis verbessern kann.

# 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?")

Damit schließen wir diesen ersten Artikel über Agenten der künstlichen Intelligenz. Wir hoffen, dass dies einen nützlichen Überblick über die verschiedenen Arten von KI-Agenten geboten hat.

Vor der Abreise

Dieser Artikel enthält viele Informationen. Wir haben den ersten Schritt auf der Lernleiter für KI-Agenten gemacht. Ich weiß, dass es verwirrend sein kann. Es gibt so viele Informationen, dass es schwierig sein kann, zu wissen, wo man anfangen und was man studieren soll.

Mein Vorschlag ist, dass Sie den gleichen Weg einschlagen, den ich einschlage. Wählen Sie Schritt für Schritt nur einige Pakete wie Agno und CrewAI aus, vertiefen Sie sich in diese und lernen Sie, jedes Mal komplexere Agenten zu erstellen. Dieser schrittweise Ansatz eignet sich am besten zum Erfassen komplexer KI-Konzepte.

In diesem Artikel haben wir bei Null angefangen und gelernt, wie man einfach mit einem großen Sprachmodell (LLM) interagiert, bis hin zur Erstellung von Agenten mit Gedächtnis oder sogar der Erstellung eines einfachen Retrieval-Augmentation-Systems (RAG) für einen KI-Agenten. Diese grundlegenden Fähigkeiten sind für das Verständnis der Funktionsweise von KI-Agenten unerlässlich.

Offensichtlich können Sie mit nur einem Agenten viel erreichen. Fortgeschrittene Beispiele finden Sie in Referenz [4].

Mit diesen einfachen Fähigkeiten sind Sie vielen Leuten sicher einen Schritt voraus und können bereits viel erreichen. Lassen Sie Ihrer Kreativität freien Lauf, warum nicht? Bitten Sie ein großes Sprachmodell um Hilfe, um etwas Großartiges zu bauen! Nutzen Sie KI-Tools, um Ihre Kreativität zu steigern.

Im nächsten Artikel erfahren wir mehr über KI-Agenten und deren Bewertung. Bleiben Sie dran!

GitHub-Repository

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

المراجع

[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

Kommentarfunktion ist geschlossen.