SON DAKİKA

Nvdia

NVIDIA NIM ile İlk İnsan-Döngü AI Ajanınızı Oluşturun

Yapay zeka (YZ) ajanları sayesinde işletmeler, manuel iş yüklerini azaltabilir ve süreçlerini daha verimli hale getirebilir. Büyük dil modelleri (LLM) ile desteklenen bu ajanlar, çok aşamalı ve yinelemeli akıl yürütme kullanarak sorunları analiz eder, çözümler geliştirir ve çeşitli araçlar aracılığıyla görevleri yerine getirir. Geleneksel sohbet botlarının aksine, LLM destekli ajanlar karmaşık görevleri otomatikleştirir; bu yüzden insan gözetimi sağlamak, otonom YZ ajanlarıyla çalışırken önemli bir unsurdur.

Bu yazıda, NVIDIA NIM mikroservisleri kullanarak insan döngüsünde YZ ajanı nasıl inşa edileceğini öğreneceksiniz. Makale, bu çok yönlü YZ ajanlarının nasıl karmaşık görevleri kolayca yerine getirebileceğini göstermek için bir sosyal medya kullanım örneği içermektedir. NIM mikroservisleri sayesinde, gelişmiş LLM’leri iş akışlarınıza sorunsuz bir şekilde entegre edebilir, YZ tabanlı görevler için gerekli ölçeklenebilirliği ve esnekliği sağlayabilirsiniz. İster tanıtım içeriği oluşturuyor olun, ister karmaşık iş akışlarını otomatikleştiriyor olun, bu eğitim süreci hız kazandırmak için tasarlandı.

Bir demo izlemek için NVIDIA NIM ile 5 Dakikada Basit Bir YZ Ajanı Nasıl Oluşturulur? başlıklı videoyu izleyebilirsiniz.

Özelleştirilmiş Sosyal Medya İçeriği İçin YZ Ajanı Oluşturma

Pazarlamacıların karşılaştığı en büyük zorluklardan biri, platformlar arasında yüksek kaliteli ve yaratıcı tanıtım içeriği üretmektir. Amaç, sosyal medyaya yayınlanacak çeşitli tanıtım mesajları ve sanat eserleri oluşturmaktır.

Geleneksel olarak, bir proje lideri bu görevleri içerik yazarları ve dijital sanatçılar gibi uzmanlara atar. Ancak, YZ ajanları bu süreci daha verimli hale getirebilir mi?

Bu kullanım örneği, Tanıtım İçerik Oluşturucu Ajanı ve Dijital Sanatçı Ajanı olmak üzere iki YZ ajanını içermektedir. Bu ajanlar, tanıtım içeriği üretecek ve bunu nihai onay için insan karar vericisine sunacak; bu sayede yaratıcı süreçte insan kontrolü ön planda tutulmuş olacaktır.

Video 1. Bir pazarlamacı, YZ ajanları ile sosyal medya gönderisi nasıl oluşturur

İnsan-Ajan Karar Alma İş Akışının Mimarisi

Bu insan döngüsünde sistem oluşturma süreci, YZ ajanlarının belirli görevlerde yardımcı olduğu, insanların ise son karar verme işlemini gerçekleştirdiği bilişsel bir iş akışı yaratmayı içerir. Şekil 1, insan karar vericisi ile ajanlar arasındaki etkileşimi özetlemektedir.

Diagram showing the interaction flow between a human decision maker and the AI agents.
Şekil 1. İnsan-ajans etkileşim kavramsal mimarisi

Tanınan İçerik Oluşturucu Ajan, Llama 3.1 405B modeli ile çalışır ve NVIDIA LLM NIM mikroservisleri tarafından hızlandırılır. ChatNVIDIA ile yapılandırılmış sonuçlar, düzenli ve güvenilir sonuçlar sağlayarak, LangChain ile entegre edilir. LangChain ise NVIDIA NIM ile kolay bağlantı kurmayı sağlayan açık kaynaklı bir Python kütüphanesidir.

Tanıtım İçerik Oluşturucu Ajanın Oluşturulması

Öncelikle Tanıtım İçerik Oluşturucu Ajanı inşa ederek başlayın. Bu ajan, belirli formatlama yönergelerine uyarak tanıtım mesajları oluşturacaktır. Bunun için NVIDIA API katalogu önizleme API uç noktalarını kullanabilirsiniz. NVIDIA AI Enterprise müşterileri de NIM uç noktalarını yerel olarak indirip çalıştırabilir.

Başlamak için aşağıdaki Python kodunu kullanabilirsiniz:

from langchain_nvidia_ai_endpoints import ChatNVIDIA
from langchain import prompts, chat_models, hub
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate, PromptTemplate
from langchain_core.pydantic_v1 import BaseModel, Field, validator
from typing import Optional, List


## 1. sistem istemini oluşturun ---------
prompt_template = """
### [INST]

Siz bir sosyal medya içerik oluşturma uzmanının.
Göreviniz, aşağıdaki ürün açıklaması ile birlikte
farklı bir tanıtım mesajı oluşturmaktır.
------
{product_desc}
------
Üretilecek tanıtım mesajı AŞAĞIDAKİ biçimi kullanmalıdır:
'''
Başlık: bu ürünün ne hakkında olduğunu tarif eden güçlü, kısa bir mesaj
Mesaj: tanıtım mesajı için yaratıcı olun, fakat kısa ve sosyal medya akışlarına uygun olsun.
Etiketler: sosyal medyada genellikle kullanılan hashtag'ler
'''
Başlayın!
[/INST]
 """
prompt = PromptTemplate(
input_variables=['produce_desc'],
template=prompt_template,
)


## 2. ürün açıklaması metni ekleyin
product_desc="NVIDIA'nın hızlandırdığı API ile topluluk tarafından oluşturulan en son YZ modellerini keşfedin, ardından NVIDIA NIM™ çıkarım mikroservisleri ile her yerde dağıtın."


## 3. yapılandırılmış çıktıyı kullanma 
class StructureOutput(BaseModel):     
    Title: str = Field(description="Tanıtım mesajının başlığı")
    Message : str = Field(description="Gerçek tanıtım mesajı")
    Tags: List[str] = Field(description="Genellikle # ile başlayan sosyal medya hashtag'leri")


## 4. Güçlü bir YZ modeli 
llm_with_output_structure=ChatNVIDIA(model="meta/llama-3.1-405b-instruct").with_structured_output(StructureOutput)     


## içerik oluşturucu ajanı oluştur
content_creator = ( prompt | llm_with_output_structure )
out=content_creator.invoke({"product_desc":product_desc})

Dijital Sanatçı Ajanının Kullanımı

Sonrasında, tanıtım metnini yaratıcı görsellere dönüştüren Dijital Sanatçı Ajanını tanıtıyoruz. Bu ajan, tanıtım başlıklarını yeniden yazarak ve sosyal medya tanıtım kampanyaları için yüksek kaliteli görseller üreterek çalışır. Aşağıdaki kod örneği, ajanın nasıl entegre edileceğini göstermektedir:

import requests
import base64, io
from PIL import Image
import requests, json
def generate_image(prompt :str) -> str :
    """
    metinden görsel oluştur
    Args:
        prompt: giriş metni
    """
    ## girdi tanıtım başlığını uygun görsel_oluşturma istemine dönüştürmek
    gen_prompt=llm_rewrite_to_image_prompts(prompt)
    print("oluşturma için görsel oluşturma istem ile başladım:", gen_prompt)
    invoke_url = "https://ai.api.nvidia.com/v1/genai/stabilityai/sdxl-turbo"
    
    headers = {
        "Authorization": f"Bearer {nvapi_key}",
        "Accept": "application/json",
    }
    
    payload = {
        "text_prompts": [{"text": gen_prompt}],
        "seed": 0,
        "sampler": "K_EULER_ANCESTRAL",
        "steps": 2
    }
    
    response = requests.post(invoke_url, headers=headers, json=payload)
    
    response.raise_for_status()
    response_body = response.json()
    ## numpy dizisine yükleniyor 
    print(response_body['artifacts'][0].keys())
    imgdata = base64.b64decode(response_body["artifacts"][0]["base64"])
    filename = 'output.jpg'
    with open(filename, 'wb') as f:
        f.write(imgdata)   
    im = Image.open(filename)  
    img_location=f"oluşturulan görsel bu yol altında saklanacaktır: {filename}"
    return img_location

Kullanıcı girişi sorgularını görsel oluşturma istemlerine dönüştürmek için aşağıdaki Python betiğini kullanabilirsiniz:

from langchain_nvidia_ai_endpoints import ChatNVIDIA
from langchain import prompts, chat_models, hub
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate, PromptTemplate


def llm_rewrite_to_image_prompts(user_query):
    prompt = prompts.ChatPromptTemplate.from_messages(
        [
            (
                "system",
                "Aşağıdaki kullanıcı sorgusunu bir cümlelik görsel oluşturma teması olarak özetleyin, şu formatı izlemelidir: İkonik, geleceğe dair bir görüntü, metin yok, kesilme yok, yüz yok, parlak, canlı.",
            ),
            ("user", "{input}"),
        ]
    )
    model = ChatNVIDIA(model="mistralai/mixtral-8x7b-instruct-v0.1")
    chain = ( prompt | model | StrOutputParser() )
    out= chain.invoke({"input":user_query})
    return out

Görsel oluşturma işlevini seçilen LLM ile bağlayın ve onu LCEL’e sararak Dijital Sanatçı Ajanı oluşturun:

## görsel oluşturma aracı olarak llm'yi bağlayın
llm=ChatNVIDIA(model="meta/llama-3.1-405b-instruct")
llm_with_img_gen_tool=llm.bind_tools([generate_image],tool_choice="generate_image")
## Dijital Sanatçı Ajanı oluşturmak için LCEL'i kullanın
digital_artist = (
    llm_with_img_gen_tool
    | output_to_invoke_tools
)

İnsan Dönüşünde Karar Verme Sürecinin Entegrasyonu

İnsan gözetimini sağlamak için, ajanlar çıktılarını nihai onay almak üzere paylaşmalıdır. Bir insan karar vericisi, içerik oluşturucu ajanın ürettiği metni ve dijital sanatçı ajanın ürettiği sanatı gözden geçirecektir.

Bu etkileşim, her iki tanıtım mesajının ve görselin de özenle gözden geçirilerek son haline getirilmesini sağlamak için çoklu yinelemelere olanak tanır. Ajanik mantık, insanları karar vericiler olarak merkezde tutarak her görev için uygun ajanları atar. LangGraph, ajansik bilişsel mimariyi düzenlemek için kullanılır.

Bu, insan girdisini talep eden bir işlev içermektedir:

# Aracı doğrudan oluşturabilirsiniz
from langchain_community.tools import HumanInputRun
from langchain.agents import AgentType, load_tools
from langchain.agents import AgentType, initialize_agent, load_tools


def get_human_input() -> str:
    """ İnsanları karar verici olarak koyar; bu nedenle hangi ajanın göreve en uygun olduğunu belirleyecektir."""
    print("2 ajan verildi. Lütfen aşağıdaki 2 ajandan sadece BİR tanesini seçip durumu onaylayın.")
    print("""Mevcut ajanlar: n
            1 İçerik Oluşturucu  n
            2 Dijital Sanatçı n          
            1 veya 2 yazın""")
    contents = []
    while True:
        try:            
            line = input()
            if line=='1':
                tool="İçerik Oluşturucu"                
                line=tool                
            elif line=='2':
                tool="Dijital Sanatçı"                
                line=tool                
            else:
                pass
            
        except EOFError:
            break
        if line == "y":
            print(f"seçilen araç: {tool} ")
            break
        contents.append(line)       
    return "n".join(contents)


# Aracı yüklerken aracı değiştirebilirsiniz


ask_human = HumanInputRun(input_func=get_human_input)

Sonrasında, LangGraph’ın bir iş akışı içerisindeki adımları veya işlemleri temsil etmek için kullanılan iki ek Python işlevi oluşturun. Bu düğümler, ajanın belirli görevleri sırasıyla veya paralel olarak gerçekleştirmesine olanak tanır ve esnek ve yapılandırılmış bir süreç oluşturur. 

from langgraph.graph import END, StateGraph
from langgraph.prebuilt import ToolInvocation
from colorama import Fore, Style

# Gerekli fonksiyonları tanımlayın 
def human_assign_to_agent(state):
    # orijinal istem kullanılmasını sağlamak için
    inputs = state["input"]
    input_to_agent = state["input_to_agent"]
    concatenate_str = Fore.BLUE + inputs + ' : ' + Fore.CYAN + input_to_agent + Fore.RESET
    print(concatenate_str)
    print("---"*10)  
    agent_choice = ask_human.invoke(concatenate_str)
    print(Fore.CYAN + "seçilen ajan: " + agent_choice + Fore.RESET)
    return {"agent_choice": agent_choice}


def agent_execute_task(state):    
    inputs = state["input"]
    input_to_agent = state["input_to_agent"]
    print(Fore.CYAN + input_to_agent + Fore.RESET)
    # seçilen ajan görevi gerçekleştirecek
    chosen_agent = state['agent_choice']
    if chosen_agent == 'İçerik Oluşturucu':
        structured_respond = content_creator.invoke({"product_desc": input_to_agent})
        respond = 'n'.join([structured_respond.Title, structured_respond.Message, ''.join(structured_respond.Tags)])       
    elif chosen_agent == "Dijital Sanatçı":
        respond = digital_artist.invoke(input_to_agent)
    else:
        respond = "lütfen ajanı yeniden seçiniz; mevcut olanlar: 1.İçerik Oluşturucu veya 2.Dijital Sanatçı"
    
    print(Fore.CYAN + "ajan çıktısı: n" + respond + Fore.RESET)
    return {"agent_use_tool_respond": respond} 

Son olarak, düğüm ve kenarları birleştirerek insan döngüsünde çoklu ajan iş akışını oluşturun. Grafik derlendiğinde, devam etmek için hazır olacaksınız:

from langgraph.graph import END, StateGraph

# Yeni bir grafik tanımlayın
workflow = StateGraph(State)

# İki düğümü tanımlayın 
workflow.add_node("start", human_assign_to_agent)
workflow.add_node("end", agent_execute_task)

# Bu, çağrılan ilk düğüm olduğu anlamına gelir
workflow.set_entry_point("start")
workflow.add_edge("start", "end")
workflow.add_edge("end", END)

# Nihayet derliyoruz!
# Bu, LangChain Runnable'a derlenmiş demektir.
# Yani, bunu diğer runnable'lar gibi kullanabilirsiniz
app = workflow.compile()

İnsan-Ajan İş Akışının Başlatılması

Artık uygulamayı başlatma zamanı. Size belirli bir görev için mevcut olan ajanlardan birini atamanız için bir yönlendirme yapacaktır.

Tanıtım Metni Yazma İçin Bir İstem

Öncelikle, içerik oluşturucu ajana tanıtım metni yazdırmak için sorgulayın. Bu metin başlık, mesaj ve sosyal medya hashtag’lerini içermelidir (Şekil 2). Çıktıdan memnun kalana kadar işlemi tekrarlayın.

Flow diagram illustrating human assigning Content Creator Agent to create promotion text.
Şekil 2. Bir insan, İçerik Oluşturucu Ajanına sosyal medya tanıtım metni oluşturması için yönlendirme yapıyor.

Bir Python kod örneği:

my_query="sosyal tanıtım etkinlikleri için iyi bir tanıtım mesajı oluşturun"
product_desc="NVIDIA NIM mikroservisleri GenAI iş akışını destekliyor"
respond=app.invoke({"input":my_query, "input_to_agent":product_desc})

İnsan, görev için 1 = İçerik Oluşturucu Ajanını seçecektir. Ajan çalışır ve agent_output döner (Şekil 3).

Screenshot of a sample response from Content Creator Agent.
Şekil 3. İçerik Oluşturucu Ajanı pipeline’dan elde edilen örnek çıktı

Görsellerin Oluşturulması İçin Bir İstem

Sonuçlardan memnun kaldıysanız, anlamlı grafikler oluşturmak üzere Dijital Sanatçı Ajanına yönlendirme yapın (Şekil 4).

Flow chart showing human assigning the Digital Artist Agent to create artwork.
Şekil 4. İnsan, Dijital Sanatçı Ajanına sosyal medya tanıtımları için sanat eseri oluşturması için yönlendirme yapıyor.

Aşağıdaki Python kodu, İçerik Oluşturucu Ajanından elde edilen başlığı, görsel istemi için giriş olarak kullanır:

## İçerik Oluşturucu Ajanından alınan başlıktan yararlanarak
prompt_for_image=respond['agent_use_tool_respond'].split('n')[0].split(':')[-1].strip()
## İnsan karar verici, ajan iş akışı uygulamasına talimat verir
input_query="aşağıdaki tanıtım mesajından bir görsel oluştur"
respond2=app.invoke({"input":input_query, "input_to_agent":prompt_for_image})

Oluşturulan görsel output.jpg olarak kaydedilmektedir. 

Screenshot of a sample response from Digital Artist Agent.
Şekil 5. Dijital Sanatçı Ajanı pipeline’dan elde edilen örnek çıktı

Yüksek Kaliteli Sonuçlar İçin Tekrar Gözden Geçirme

Farklı sanat eserleri elde etmek için üretilen görseller üzerinde yineleme yaparak istediğiniz sonuçları elde edebilirsiniz (Şekil 6). İçerik Oluşturucu Ajanından alınan giriş istemini biraz değiştirerek Dijital Sanatçı Ajanından çeşitli görseller elde edebilirsiniz.

Three sample images generated by the Digital Artist Agent.
Şekil 6. Dijital Sanatçı Ajanı tarafından oluşturulan örnek görseller

Son Ürünün İyileştirilmesi

Son olarak, her iki ajandan elde edilen çıktıları bir araya getirerek şekillendirme yapın ve son görsel inceleme için Markdown formatına getirin (Şekil 7).

An image of a robot head and shoulders with a social media post entitled ‘Unlock Next-Gen AI Innovation.'
Şekil 7. YZ ajanları tarafından üretilmiş bir sosyal medya gönderisi ve ilgili görselin sonunda işlenmiş çıktısı

NVIDIA NIM Mikroservisleri ve YZ Araçları ile YZ Ajanınızı Geliştirin

Bu yazıda, NVIDIA NIM mikroservisleri ve LangChain’in LangGraph kullanarak insan döngüsünde YZ ajanı nasıl gelişmiş bir şekilde inşa edileceğini öğrendiniz. YZ ajanlarını iş akışınıza dahil ederek, içerik üretimini hızlandırabilir, manuel çabayı azaltabilir ve yaratıcı süreçte tam kontrol sağlayabilirsiniz.

NVIDIA NIM mikroservisleri, YZ destekli görevlerinizi verimlilik ve esneklikle ölçeklendirme imkanı sunar. İster tanıtım mesajları oluşturun, ister görsel tasarlayın, insan döngüsünde YZ ajanları, iş akışlarınızı optimize etme ve üretkenliği artırma konusunda güçlü bir çözümdür.

Daha fazla model, YZ aracı ve en iyi uygulamalar hakkında daha fazla bilgi edinmek için NVIDIA NIM Mikroservisleri ile YZ Ajanları Oluşturma başlıklı makaleyi inceleyin, Llama 3.1 405B NIM mikroservisi‘ni keşfedin ve LangGraph Kullanarak İnsan Döngüsünde Ajanik Mantık isimli not defterine dalın.

Kaynak

Nvdia Blog

Düşüncenizi Paylaşın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İlgili Teknoloji Haberleri