Kendi Kendine Eylem Yapan Yapay Zeka Rehberi: Yapay Zeka Aracıları Oluşturma Yolculuğunuza Başlayın

Yapay zeka ajanlarının nasıl oluşturulacağına dair temel bilgileri öğrenin. Bu akıllı sistemleri tasarlamak ve uygulamak için gereken araçları ve teknikleri keşfedin.

Yapay zeka sektörü hızlı gelişmelere sahne oluyor. Etkileyici ve çoğu zaman kafa karıştırıcı.

Veri biliminin geleceğinin üretken yapay zekanın geliştirilmesiyle yakından bağlantılı olduğuna inandığım için bu veri bilimi alanında çalışıyorum, öğreniyorum ve temellerimi oluşturuyorum.

İlk evimi inşa ettiğim gün dün gibi geliyor AI AjanıVe iki hafta sonra, aralarından seçim yapabileceğiniz birçok Python paketi vardı, çok iyi performans gösteren kodsuz seçeneklerden bahsetmiyorum bile, örneğin hayır.

Bizimle sohbet edebilen basit modellerden, her yerde bulunan, internette arama yapan, dosyaları işleyen ve projeleri yürüten yapay zeka ajanlarından oluşan bir tsunamiye kadar. Veri Bilimi Tüm süreç (ilk veri keşfinden modelleme ve değerlendirmeye kadar) sadece birkaç yıl içinde gerçekleşti.

Ne?

Bütün bunları görünce aklıma şu geldi: "En kısa zamanda katılmam gerekiyor.". Sonuç olarak, dalgaya kapılmak yerine onu yakalamak daha iyidir.

Bu nedenle, temellerden başlayarak ilk yapay zeka ajanımızı oluşturmaya ve daha karmaşık konseptlere kadar ilerlemeyi planladığım bu yazı serisini başlatmaya karar verdim.

Yeterince konuştuk, başlayalım.

AI Agent Temelleri

Büyük bir dil modeline (LLM) araçlarla etkileşime girme ve bizim için yararlı eylemleri gerçekleştirme yeteneği verdiğimizde bir AI aracısı yaratılmış olur. Sadece bir chatbot olmanın ötesine geçerek artık randevu planlayabiliyor, takvimimizi yönetebiliyor, internette arama yapabiliyor, sosyal medya paylaşımları yazabiliyor ve liste uzayıp gidiyor... Bu dönüşüm onu ​​tam teşekküllü bir dijital asistan haline getiriyor.

Yapay zeka destekli aracılar yalnızca sohbet etmekle kalmayıp faydalı şeyler de yapabilir.

Peki bu gücü büyük dil modeline (LLM) nasıl verebiliriz?

Basit cevap, büyük dil modeliyle etkileşim kurmak için bir API kullanmaktır. Günümüzde bunun için pek çok Python paketi mevcut. Blogumu takip ediyorsanız, ajan oluşturmak için birkaç paketi denediğimi göreceksiniz: Örneğin Langchain, Agno (eski adıyla Phidata) ve CrewAI. Bu seri için Agno'ya[1] sadık kalacağım.

Öncelikle, aşağıdakileri kullanarak sanal bir ortam kurun: uv Veya Anaconda veya favori ortam işlemciniz. Daha sonra paketleri kurun.

# 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

Devam etmeden önce kısa bir not. Google Gemini API anahtarınızı almayı unutmayın [2].

Basit bir proxy oluşturmak çok kolaydır. Tüm paketler birbirine çok benziyor. Bir sınıfları var. Agent Ya da bize bir model seçip, seçtiğimiz daha büyük dil modeliyle etkileşime girmemizi sağlayan benzer bir şey. Bu kategorinin ana bileşenleri şunlardır:

  • model:Büyük dil modeline bağlan. Burada OpenAI, Gemini, Llama, Deepseek vb. arasından seçim yapacağız.
  • descriptionBu parametre bize ajanın davranışını tanımlama olanağı sağlar. Bu eklendi system_message, benzer bir ortamdır.
  • instructionsBen bir acenteyi, yönettiğimiz bir çalışan veya asistan olarak düşünmeyi seviyorum. Bir görevi başarabilmek için ne yapılması gerektiği konusunda talimat vermemiz gerekir. İşte bunu yapabilirsiniz.
  • expected_outputBurada beklenen çıktı hakkında talimatlar sağlayabiliriz.
  • toolsBüyük bir dil modelini bir etken haline getiren şey, bu araçları kullanarak gerçek dünyayla etkileşime girmesine olanak sağlamasıdır.

Şimdi, hiçbir araca ihtiyaç duymayan, ancak kod yapısı hakkındaki sezgilerimizi oluşturmaya yarayacak basit bir ajan oluşturalım.

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

## ...

Mayıs ayında New York'ta ılımlı sıcaklıklar bekleniyor; sıcaklıklar genellikle 10 ila 21 derece arasında değişiyor. Yağmur ihtimali vardır, bu nedenle kat kat giyinmeniz ve şemsiye bulundurmanız önerilir.

Bu harika. Gemini 1.5 modelini kullanıyoruz. Eğitildiği verilere göre nasıl yanıt verdiğine dikkat edin. Bugün hava durumunu sorduğumuz zaman internete giremediğini göreceğiz.

Aracıları inceleyelim. instructions و expected_output. Şimdi New York City (NYC) için ay, mevsim ve ortalama sıcaklığın yer aldığı bir tablo istiyoruz.

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

Ve sonuç bu.

ay sezon Ortalama sıcaklık (°F)
Ocak kış 32
Şubat kış 35
Mart İngilizce 44
Nisan İngilizce 54
Mayıs İngilizce 63
Haziran yaz 72
Temmuz yaz 77
Ağustos yaz 76
Eylül Sonbahar 70
Ekim Sonbahar 58
Kasım Sonbahar 48
Aralık kış 37

Araçlar

Yukarıdaki cevaplar güzel, ama tabii ki güçlü büyük dil modellerini (LLM) kullanarak bir chatbot ile oynamak veya bize eski haberleri anlatmak istemeyiz, değil mi?

Otomasyona, üretkenliğe ve bilgiye giden bir köprü olmasını istiyoruz. Yani, ekleyeceksin Araçlar Yapay zeka ajanlarımıza yetenekler kazandırarak gerçek dünyayla bir köprü kuruyoruz. Aracıların yaygın örnekleri arasında şunlar yer alır: web'de arama yapmak, SQL çalıştırmak, e-posta göndermek veya API'leri çağırmak.

Ama bundan da öte, herhangi bir Python fonksiyonunu bir araç olarak kullanarak ajanlarımız için özel yetenekler yaratabilir, bu da farklı sistemler ve süreçlerle entegrasyon için geniş olanaklar sunar.

Aletler Bunlar, bir etkenin görevleri yerine getirmek için çalıştırabileceği işlevlerdir.

Kod açısından, bir aracıya bir widget eklemek, basitçe ara yazılımı kullanma meselesidir. tools Kategoride Agent.

Sağlık ve zindelik alanında içerik oluşturmayı otomatikleştirmek isteyen bir şahıs işletmesini (tek kişilik işletme) hayal edin. Bu kişi her gün sağlıklı alışkanlıklar hakkında ipuçları paylaşıyor. İçerik oluşturmanın göründüğü kadar basit olmadığını biliyorum. Yaratıcılık, araştırma ve metin yazarlığı becerileri gerektirir. Yani, eğer otomasyona geçirilebilirse veya en azından bir kısmı otomasyona geçirilebilirse, zamandan tasarruf sağlanır.

Bu nedenle, basit bir Instagram gönderisi oluşturabilen ve bunu inceleme için bir Markdown dosyasına kaydedebilen çok basit bir aracı oluşturmak için bu kodu yazıyoruz. Süreci düşün > araştır > yaz > incele > yayınla'dan incele > yayınla'ya indirdik.

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

Sonuç olarak şu ortaya çıkıyor.

Sağlıklı beslenerek pozitif enerjinizi ortaya çıkarın:

1. Tam gıdalara öncelik verin: Bol miktarda meyve, sebze, yağsız protein ve tam tahıl tüketin. Besin açısından zengindir ve kendinizi tok ve enerjik hissetmenizi sağlar.

2. Farkındalıkla yiyin: Vücudunuzun açlık ve tokluk sinyallerine dikkat edin. Yemek yerken dikkat dağıtacak şeylerden uzak durun.

3. Bol su için: Su, sindirim, enerji seviyesi ve genel sağlık için gereklidir..

4. Kendinizi mahrum bırakmayın: Arada sırada kendinize tatlı yemeyi ihmal etmeyin. Yoksunluk, ileride aşırı yemeye yol açabilir. Her şeyin tadını ölçülü çıkarın!

5. Önceden plan yapın: Sağlıksız kararlar almaktan kaçınmak için yemeklerinizi veya atıştırmalıklarınızı önceden hazırlayın.

#SağlıklıBeslenme #SağlıklıYaşamTarzı #Beslenme #YemekSeverler #SağlıkVeZindelik #Sağlıklıİpuçları #TemizBeslenme #KiloVerme #SağlıklıTarifler #Beslenmeİpuçları #AnındaSağlık #SağlıklıYiyecekler #DikkatliBeslenme #SağlıklıYolculuk #SağlıkKoçu

Elbette, içerik için web siteleri listesini tarayacak diğer ajanlardan oluşan bir ekip, bir içerik denetleyicisi ve inceleyicisi ve gönderi için bir resim oluşturacak başka bir ekip oluşturarak işi daha da karmaşık hale getirebiliriz. Ama sanırım genel olarak nasıl ekleneceğine dair bir fikir edinmişsinizdir tool إلى Agent.

Ekleyebileceğimiz bir diğer araç türü ise şudur: bir araç fonksiyon aracı. Büyük dil modeli (LLM) için bir araç görevi görecek şekilde bir Python fonksiyonunu kullanabiliriz. Sadece şu gibi tür ipuçlarını eklemeyi unutmayın: video_id:strBöylece model, fonksiyona girdi olarak ne kullanacağını bilir. Aksi takdirde bir hata görebilirsiniz.

Gelin bunun nasıl işlediğine kısaca bakalım.

Artık acentemizin belirli bir YouTube videosunu alabilmesini ve özetleyebilmesini istiyoruz. Böyle bir görevi gerçekleştirmek için, YT'den video metnini indiren ve özetlenmesi için modele ileten bir fonksiyon oluşturmamız yeterlidir.

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

O zaman bir sonuç elde edersiniz.

Akıl yürütme yeteneğine sahip ajanlar

Agno'nun sunduğu bir diğer harika seçenek ise bir soruya cevap vermeden önce durumu analiz edebilen ajanlar yaratma yeteneğidir. Bu bir muhakeme aracıdır. doğrulamak Yapay Zeka Aracı Türleri ve Kullanımları: Ayrıntılı Açıklama.

Alibaba'nın Qwen-qwq-32b modelini kullanarak bir akıl yürütme aracı yaratacağız. Burada modelin dışında tek farkın, widget'ı eklememiz olduğunu unutmayın. ReasoningTools(). Bu araç, temsilcinin cevap vermeden önce mantıksal düşünmesini sağlar.

Mülkiyet demek adding_instructions=True Aracın kullanımında güvenilirlik ve doğruluğu artırarak, aracı kullanan kişilere detaylı talimatlar sağlamak. Bu özelliği ayarlarken sonuç şu olacaktır: False Temsilciyi, hatalara daha açık olabilecek kendi muhakemesine güvenmeye zorlamak. Bu, modelin yeteneklerinin bağımsız olarak değerlendirilmesine olanak tanır.

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

Çıktılar aşağıdadır.

bilgi sağlayan ajan

Bu araç, Recovery Augmented Generation (RAG) sistemini oluşturmanın en kolay yoludur. Bu özellik sayesinde, aracınızı bir web sitesine veya web sitesi listesine yönlendirebilir ve içeriği vektörel bir veritabanına ekleyebilirsiniz. Bundan sonra içerik aranabilir hale gelir. İstendiğinde, aracı içeriği yanıtın bir parçası olarak kullanabilir. Bu teknoloji, yapay zekanın verdiği yanıtların doğruluğunu ve güvenilirliğini artırıyor.

Bu basit örnekte, web sitemden bir sayfa ekledim ve acenteye orada hangi kitapların listelendiğini sordum. Bu, aracının bilgilere nasıl erişebileceğini ve bunları nasıl kullanabileceğini açıklar.

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

Bellek etkinleştirilmiş aracı

Bu makalede ele alacağımız son tür, yapay zeka ajanları alanında temel bir kavram olan bellek destekli ajanlardır.

Bu tür aracılar, kullanıcıların önceki etkileşimlerinden gelen bilgileri depolama ve geri alma yeteneğine sahiptir; bu sayede kullanıcı tercihlerini anlayabilir ve yanıtlarını kişiselleştirebilir. Bu hafıza, ajanın sonraki etkileşimlerde daha etkili olmasını sağlar.

Şimdi bu örnekte, acenteye bazı şeyler söyleyeceğim ve bu etkileşime dayanarak ondan öneriler isteyeceğim. Bu, bellek destekli bir aracının kullanıcı deneyimini nasıl iyileştirebileceğini göstermektedir.

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

Bununla birlikte bu ilk makaleyi sonlandırıyoruz Yapay zeka ajanları. Umarız bu, farklı AI ajan türleri hakkında faydalı bir genel bakış sağlamıştır.

Ayrılmadan önce

Bu yazıda çok fazla bilgi yer alıyor. Yapay zeka ajanı öğrenme merdiveninde ilk adımı attık. Kafa karıştırıcı olabileceğini biliyorum, o kadar çok bilgi var ki nereden başlayacağınızı ve neyi çalışacağınızı bilmek zor olabilir.

Benim önerim, benim izlediğim yolu izlemenizdir. Adım adım ilerleyin, Agno ve CrewAI gibi birkaç paketi seçin, bunları derinlemesine inceleyin ve her seferinde daha karmaşık ajanlar oluşturmayı öğrenin. Karmaşık yapay zeka kavramlarını kavramak için bu kademeli yaklaşım en iyisidir.

Bu yazıda, sıfırdan başlayarak büyük bir dil modeliyle (LLM) nasıl etkileşime girileceğini, hafızalı aracılar oluşturmayı ve hatta bir yapay zeka aracısı için basit bir geri çağırma artırma (RAG) sistemi oluşturmayı öğrendik. Bu temel beceriler, yapay zeka ajanlarının nasıl çalıştığını anlamak için olmazsa olmazdır.

Tek bir acenteyle yapabileceğiniz çok şey var. Gelişmiş örnekler için [4] referansına bakın.

Bu basit becerilerle birçok kişiden önde olacaksınız ve halihazırda yapabileceğiniz çok şey var. Yaratıcılığınızı kullanın, neden olmasın? Harika bir şey inşa etmek için büyük bir dil modelinden yardım isteyin! Yaratıcılığınızı geliştirmek için yapay zeka araçlarını kullanın.

Bir sonraki yazımızda yapay zeka ajanları ve değerlendirmeleri hakkında daha fazla bilgi edineceğiz. Takipte kalın!

GitHub deposu

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

İngilizce

[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

Yoruma kapalı.