Tutorial Semantic Kernel: Framework AI Orchestration dari Microsoft untuk Membangun Aplikasi Cerdas

# Tutorial Semantic Kernel: Framework AI Orchestration dari Microsoft untuk Membangun Aplikasi Cerdas Semantic Kernel adalah SDK open-source dari Microsoft yang dirancang untuk mengintegrasikan Large...

By Ruby Abdullah · · tutorial
Semantic KernelMicrosoftAI AgentsPythonLLM

Tutorial Semantic Kernel: Framework AI Orchestration dari Microsoft untuk Membangun Aplikasi Cerdas

Semantic Kernel adalah SDK open-source dari Microsoft yang dirancang untuk mengintegrasikan Large Language Models (LLM) ke dalam aplikasi secara terstruktur dan modular. Framework ini memungkinkan developer membangun aplikasi AI yang menggabungkan prompt engineering, plugin system, dan agentic workflow dalam satu arsitektur yang koheren. Dalam tutorial ini, kita akan mempelajari cara menggunakan Semantic Kernel dengan Python, mulai dari instalasi hingga membangun AI agent yang mampu mengeksekusi tugas kompleks secara otonom.

Mengapa Semantic Kernel?

Berbeda dengan framework AI lainnya yang fokus pada chaining prompt sederhana, Semantic Kernel mengambil pendekatan yang lebih enterprise-ready. Beberapa keunggulan utamanya antara lain:

  • Plugin Architecture: Memisahkan logika bisnis dari prompt, sehingga kode lebih maintainable
  • Multi-Provider Support: Mendukung OpenAI, Azure OpenAI, Hugging Face, dan provider lainnya
  • Automatic Function Calling: LLM dapat secara otomatis memilih dan mengeksekusi fungsi yang tersedia
  • Memory dan RAG Built-in: Integrasi native dengan vector store untuk konteks jangka panjang
  • Planner: Kemampuan untuk memecah tugas kompleks menjadi langkah-langkah yang dapat dieksekusi
  • Type Safety: Strongly typed dengan dukungan Pydantic untuk validasi input/output

Semantic Kernel digunakan secara luas di produk Microsoft seperti Microsoft 365 Copilot, menjadikannya framework yang sudah teruji di skala produksi.

Instalasi

Prasyarat

Pastikan Python 3.10 atau lebih baru sudah terinstal di sistem Anda.

python --version

Instalasi Semantic Kernel

pip install semantic-kernel

Untuk fitur tambahan, Anda bisa menginstal extras yang diperlukan:

# Untuk Azure OpenAI

pip install semantic-kernel[azure]

Untuk Hugging Face

pip install semantic-kernel[huggingface]

Untuk Google AI

pip install semantic-kernel[google]

Semua provider

pip install semantic-kernel[all]

Konfigurasi Environment Variables

Buat file .env di root project Anda:

# Untuk OpenAI

OPENAIAPIKEY=sk-your-api-key-here

OPENAICHATMODELID=gpt-4o

Untuk Azure OpenAI

AZUREOPENAIAPIKEY=your-azure-key

AZUREOPENAIENDPOINT=https://your-resource.openai.azure.com/

AZUREOPENAICHATDEPLOYMENTNAME=gpt-4o

Basic Usage

Membuat Kernel Pertama

Kernel adalah inti dari Semantic Kernel. Ia berfungsi sebagai container untuk semua layanan, plugin, dan konfigurasi.

import asyncio

from semantickernel import Kernel

from semantickernel.connectors.ai.openai import OpenAIChatCompletion

kernel = Kernel()

chatservice = OpenAIChatCompletion(

aimodelid="gpt-4o",

serviceid="chat"

)

kernel.addservice(chatservice)

async def main():

result = await kernel.invokeprompt("Jelaskan apa itu machine learning dalam 3 kalimat.")

print(result)

asyncio.run(main())

Menggunakan Chat History

Untuk percakapan multi-turn, gunakan ChatHistory:

import asyncio

from semantickernel import Kernel

from semantickernel.connectors.ai.openai import OpenAIChatCompletion

from semantickernel.contents import ChatHistory

kernel = Kernel()

kernel.addservice(OpenAIChatCompletion(

aimodelid="gpt-4o",

serviceid="chat"

))

chathistory = ChatHistory()

chathistory.addsystemmessage(

"Kamu adalah asisten AI yang membantu developer Python. "

"Jawab dengan ringkas dan berikan contoh kode jika diperlukan."

)

async def chat(userinput: str):

chathistory.addusermessage(userinput)

result = await kernel.invokeprompt(

userinput,

chathistory=chathistory

)

response = str(result)

chathistory.addassistantmessage(response)

return response

async def main():

print(await chat("Apa itu decorator di Python?"))

print(await chat("Berikan contoh penggunaannya"))

asyncio.run(main())

Prompt Template

Semantic Kernel memiliki sistem template yang memungkinkan Anda membuat prompt yang reusable:

import asyncio

from semantickernel import Kernel

from semantickernel.connectors.ai.openai import OpenAIChatCompletion

from semantickernel.prompttemplate import PromptTemplateConfig

kernel = Kernel()

kernel.addservice(OpenAIChatCompletion(

aimodelid="gpt-4o",

serviceid="chat"

))

promptconfig = PromptTemplateConfig(

template="""Kamu adalah seorang {{$role}}.

Tugas: {{$task}}

Berikan jawaban yang detail dan terstruktur.""",

inputvariables=[

{"name": "role", "description": "Peran AI"},

{"name": "task", "description": "Tugas yang harus dilakukan"}

]

)

function = kernel.addfunction(

pluginname="writer",

functionname="generate",

prompttemplateconfig=promptconfig

)

async def main():

result = await kernel.invoke(

function,

role="data scientist senior",

task="Jelaskan perbedaan antara Random Forest dan Gradient Boosting"

)

print(result)

asyncio.run(main())

Plugin System

Plugin adalah fitur inti Semantic Kernel yang memungkinkan Anda mendefinisikan fungsi-fungsi yang dapat dipanggil oleh LLM secara otomatis.

Membuat Native Plugin

import asyncio

from datetime import datetime

from typing import Annotated

from semantickernel import Kernel

from semantickernel.connectors.ai.openai import OpenAIChatCompletion

from semantickernel.functions import kernelfunction

class UtilityPlugin:

@kernelfunction(description="Mendapatkan tanggal dan waktu saat ini")

def getcurrenttime(self) -> str:

return datetime.now().strftime("%Y-%m-%d %H:%M:%S")

@kernelfunction(description="Menghitung diskon dari harga asli")

def calculatediscount(

self,

price: Annotated[float, "Harga asli produk"],

discountpercent: Annotated[float, "Persentase diskon"]

) -> str:

discounted = price (1 - discountpercent / 100)

savings = price - discounted

return f"Harga asli: Rp{price:,.0f}, Diskon: {discountpercent}%, Harga akhir: Rp{discounted:,.0f}, Hemat: Rp{savings:,.0f}"

@kernelfunction(description="Mengkonversi suhu dari Celsius ke Fahrenheit")

def celsiustofahrenheit(

self,

celsius: Annotated[float, "Suhu dalam Celsius"]

) -> str:

fahrenheit = (celsius 9/5) + 32

return f"{celsius}°C = {fahrenheit}°F"

kernel = Kernel()

kernel.addservice(OpenAIChatCompletion(

aimodelid="gpt-4o",

serviceid="chat"

))

kernel.addplugin(UtilityPlugin(), pluginname="utility")

async def main():

result = await kernel.invokeprompt(

"Berapa harga setelah diskon 25% dari Rp500.000?"

)

print(result)

asyncio.run(main())

Plugin dengan Async Functions

import asyncio

import httpx

from semantickernel.functions import kernelfunction

from typing import Annotated

class WeatherPlugin:

@kernelfunction(description="Mendapatkan informasi cuaca untuk sebuah kota")

async def getweather(

self,

city: Annotated[str, "Nama kota untuk dicek cuacanya"]

) -> str:

async with httpx.AsyncClient() as client:

response = await client.get(

"https://api.open-meteo.com/v1/forecast",

params={

"latitude": 0,

"longitude": 0,

"currentweather": True

}

)

data = response.json()

weather = data.get("currentweather", {})

return (

f"Cuaca di {city}: "

f"Suhu {weather.get('temperature', 'N/A')}°C, "

f"Kecepatan angin {weather.get('windspeed', 'N/A')} km/h"

)

Plugin dari File Prompt

Anda bisa mendefinisikan plugin dari file prompt yang terorganisir dalam folder:

plugins/

WriterPlugin/

Summarize/

skprompt.txt

config.json

Translate/

skprompt.txt

config.json

File skprompt.txt:

Ringkas teks berikut dalam {{$targetlength}} kalimat:

{{$input}}

Ringkasan:

File config.json:

{

"schema": 1,

"description": "Meringkas teks panjang menjadi versi yang lebih pendek",

"inputvariables": [

{

"name": "input",

"description": "Teks yang akan diringkas"

},

{

"name": "targetlength",

"description": "Jumlah kalimat untuk ringkasan",

"default": "3"

}

]

}

Memuat plugin dari folder:

kernel.addplugin(parentdirectory="./plugins", pluginname="WriterPlugin")

Automatic Function Calling

Salah satu fitur paling powerful dari Semantic Kernel adalah kemampuan LLM untuk secara otomatis memilih dan memanggil fungsi yang tepat berdasarkan konteks percakapan.

import asyncio

from semantickernel import Kernel

from semantickernel.connectors.ai.openai import OpenAIChatCompletion

from semantickernel.connectors.ai.openai.promptexecutionsettings import (

OpenAIChatPromptExecutionSettings,

)

from semantickernel.connectors.ai.functionchoicebehavior import FunctionChoiceBehavior

from semantickernel.contents import ChatHistory

from semantickernel.functions import kernelfunction

from typing import Annotated

class MathPlugin:

@kernelfunction(description="Menambahkan dua angka")

def add(

self,

a: Annotated[float, "Angka pertama"],

b: Annotated[float, "Angka kedua"]

) -> float:

return a + b

@kernelfunction(description="Mengalikan dua angka")

def multiply(

self,

a: Annotated[float, "Angka pertama"],

b: Annotated[float, "Angka kedua"]

) -> float:

return a b

@kernelfunction(description="Menghitung pangkat")

def power(

self,

base: Annotated[float, "Basis"],

exponent: Annotated[float, "Eksponen"]

) -> float:

return base exponent

kernel = Kernel()

kernel.addservice(OpenAIChatCompletion(

aimodelid="gpt-4o",

serviceid="chat"

))

kernel.addplugin(MathPlugin(), pluginname="math")

settings = OpenAIChatPromptExecutionSettings(

serviceid="chat",

functionchoicebehavior=FunctionChoiceBehavior.Auto()

)

chathistory = ChatHistory()

async def main():

chathistory.addusermessage(

"Berapa hasil dari (15 + 27) dikali 3, kemudian dipangkatkan 2?"

)

result = await kernel.invokeprompt(

"{{$chathistory}}",

chathistory=chathistory,

settings=settings

)

print(f"Jawaban: {result}")

asyncio.run(main())

Dalam contoh di atas, LLM akan secara otomatis:

  • Memanggil add(15, 27) untuk mendapatkan 42
  • Memanggil multiply(42, 3) untuk mendapatkan 126
  • Memanggil power(126, 2) untuk mendapatkan 15876
  • Advanced Usage

    Membangun AI Agent dengan Semantic Kernel

    Agent di Semantic Kernel memungkinkan Anda membuat entitas AI yang memiliki persona, tools, dan kemampuan khusus.

    import asyncio
    

    from semantickernel import Kernel

    from semantickernel.agents import ChatCompletionAgent

    from semantickernel.connectors.ai.openai import OpenAIChatCompletion

    from semantickernel.contents import ChatHistory

    from semantickernel.functions import kernelfunction

    from typing import Annotated

    class DatabasePlugin:

    @kernelfunction(description="Mengeksekusi query SQL dan mengembalikan hasil")

    def executequery(

    self,

    query: Annotated[str, "Query SQL untuk dieksekusi"]

    ) -> str:

    sampledata = {

    "SELECT COUNT() FROM users": "Total users: 1,247",

    "SELECT AVG(revenue) FROM sales WHERE month='2026-09'":

    "Average revenue September 2026: Rp45,230,000"

    }

    for key, value in sampledata.items():

    if key.lower() in query.lower():

    return value

    return f"Query executed: {query}\nRows affected: 0"

    @kernelfunction(description="Mendapatkan daftar tabel yang tersedia di database")

    def listtables(self) -> str:

    return "Tables: users, sales, products, orders, inventory"

    @kernelfunction(description="Mendapatkan skema dari sebuah tabel")

    def gettableschema(

    self,

    tablename: Annotated[str, "Nama tabel"]

    ) -> str:

    schemas = {

    "users": "id INT PK, name VARCHAR, email VARCHAR, createdat TIMESTAMP",

    "sales": "id INT PK, productid INT FK, amount DECIMAL, month VARCHAR",

    "products": "id INT PK, name VARCHAR, price DECIMAL, category VARCHAR"

    }

    return schemas.get(tablename, f"Table '{tablename}' not found")

    kernel = Kernel()

    kernel.addservice(OpenAIChatCompletion(

    aimodelid="gpt-4o",

    serviceid="chat"

    ))

    kernel.addplugin(DatabasePlugin(), pluginname="database")

    agent = ChatCompletionAgent(

    kernel=kernel,

    name="DataAnalyst",

    instructions="""Kamu adalah seorang data analyst yang ahli dalam SQL dan analisis data.

    Gunakan tools database yang tersedia untuk menjawab pertanyaan pengguna.

    Selalu jelaskan query yang kamu jalankan dan interpretasi hasilnya.

    Jawab dalam bahasa Indonesia.""",

    )

    async def main():

    history = ChatHistory()

    history.addusermessage("Berapa total user yang terdaftar di sistem?")

    async for message in agent.invoke(history):

    print(f"Agent: {message.content}")

    asyncio.run(main())

    Multi-Agent Collaboration

    Semantic Kernel mendukung kolaborasi antar agent melalui AgentGroupChat:

    import asyncio
    

    from semantickernel import Kernel

    from semantickernel.agents import ChatCompletionAgent, AgentGroupChat

    from semantickernel.agents.strategies import TerminationStrategy

    from semantickernel.connectors.ai.openai import OpenAIChatCompletion

    from semantickernel.contents import ChatMessageContent, AuthorRole

    kernel = Kernel()

    kernel.addservice(OpenAIChatCompletion(

    aimodelid="gpt-4o",

    serviceid="chat"

    ))

    analyst = ChatCompletionAgent(

    kernel=kernel,

    name="Analyst",

    instructions="""Kamu adalah business analyst.

    Analisis masalah bisnis dan identifikasi kebutuhan teknis.

    Berikan rekomendasi yang terukur dan realistis."""

    )

    engineer = ChatCompletionAgent(

    kernel=kernel,

    name="Engineer",

    instructions="""Kamu adalah software engineer senior.

    Evaluasi rekomendasi teknis dari analyst.

    Berikan estimasi effort, arsitektur, dan potensi risiko.

    Jawab dengan spesifik dan teknis."""

    )

    reviewer = ChatCompletionAgent(

    kernel=kernel,

    name="Reviewer",

    instructions="""Kamu adalah project reviewer.

    Review output dari analyst dan engineer.

    Berikan approval atau feedback untuk perbaikan.

    Jika sudah cukup baik, akhiri dengan kata APPROVED."""

    )

    class ApprovalTermination(TerminationStrategy):

    async def shouldagentterminate(self, agent, history):

    if history:

    last = history[-1]

    return "APPROVED" in last.content.upper()

    return False

    chat = AgentGroupChat(

    agents=[analyst, engineer, reviewer],

    terminationstrategy=ApprovalTermination(

    agents=[reviewer],

    maximumiterations=6

    )

    )

    async def main():

    await chat.addchatmessage(

    ChatMessageContent(

    role=AuthorRole.USER,

    content="Kami ingin membangun sistem rekomendasi produk untuk e-commerce dengan 100K SKU dan 1M users aktif."

    )

    )

    async for message in chat.invoke():

    print(f"\n{'='*50}")

    print(f"[{message.name}]: {message.content}")

    asyncio.run(main())

    Memory dan Vector Store Integration

    Semantic Kernel mendukung integrasi dengan berbagai vector store untuk fitur memory dan RAG:

    import asyncio
    

    from semantickernel import Kernel

    from semantickernel.connectors.ai.openai import (

    OpenAIChatCompletion,

    OpenAITextEmbedding,

    )

    from semantickernel.memory import SemanticTextMemory, VolatileMemoryStore

    kernel = Kernel()

    kernel.addservice(OpenAIChatCompletion(

    aimodelid="gpt-4o",

    serviceid="chat"

    ))

    embeddingservice = OpenAITextEmbedding(

    aimodelid="text-embedding-3-small",

    serviceid="embedding"

    )

    memorystore = VolatileMemoryStore()

    memory = SemanticTextMemory(

    storage=memorystore,

    embeddingsgenerator=embeddingservice

    )

    async def main():

    collection = "companyknowledge"

    await memory.saveinformation(

    collection=collection,

    id="policy1",

    text="Kebijakan cuti tahunan adalah 12 hari kerja per tahun. "

    "Cuti dapat diakumulasi maksimal 6 hari ke tahun berikutnya."

    )

    await memory.saveinformation(

    collection=collection,

    id="policy2",

    text="Jam kerja standar adalah Senin-Jumat, 09:00-18:00 WIB. "

    "Lembur dihitung setelah 8 jam kerja per hari."

    )

    await memory.saveinformation(

    collection=collection,

    id="policy3",

    text="Benefit karyawan meliputi BPJS Kesehatan, BPJS Ketenagakerjaan, "

    "asuransi tambahan, dan tunjangan makan Rp35.000 per hari."

    )

    results = await memory.search(

    collection=collection,

    query="Berapa hari cuti yang didapat karyawan?",

    limit=2

    )

    context = "\n".join([r.text for r in results])

    result = await kernel.invokeprompt(

    f"""Berdasarkan informasi berikut:

    {context}

    Jawab pertanyaan: Berapa hari cuti yang didapat karyawan dan apakah bisa diakumulasi?"""

    )

    print(result)

    asyncio.run(main())

    Filters dan Hooks

    Semantic Kernel menyediakan filter system untuk logging, monitoring, dan modifikasi request/response:

    import asyncio
    

    import time

    from semantickernel import Kernel

    from semantickernel.connectors.ai.openai import OpenAIChatCompletion

    from semantickernel.filters import (

    FunctionInvocationContext,

    PromptRenderContext,

    )

    kernel = Kernel()

    kernel.addservice(OpenAIChatCompletion(

    aimodelid="gpt-4o",

    serviceid="chat"

    ))

    @kernel.filter(filtertype="functioninvocation")

    async def logfunctionfilter(context: FunctionInvocationContext, next):

    starttime = time.time()

    print(f"[LOG] Calling function: {context.function.name}")

    print(f"[LOG] Arguments: {context.arguments}")

    await next(context)

    elapsed = time.time() - starttime

    print(f"[LOG] Function {context.function.name} completed in {elapsed:.2f}s")

    print(f"[LOG] Result: {str(context.result)[:200]}")

    @kernel.filter(filtertype="promptrender")

    async def modifypromptfilter(context: PromptRenderContext, next):

    await next(context)

    context.renderedprompt += "\n\nJawab dalam bahasa Indonesia yang formal."

    print(f"[LOG] Rendered prompt length: {len(context.renderedprompt)}")

    async def main():

    result = await kernel.invokeprompt("Apa itu neural network?")

    print(f"\nResult: {result}")

    asyncio.run(main())

    Streaming Responses

    Untuk aplikasi real-time, gunakan streaming:

    import asyncio
    

    from semantickernel import Kernel

    from semantickernel.connectors.ai.openai import OpenAIChatCompletion

    kernel = Kernel()

    kernel.addservice(OpenAIChatCompletion(

    aimodelid="gpt-4o",

    serviceid="chat"

    ))

    async def main():

    print("Response: ", end="", flush=True)

    async for chunk in kernel.invokepromptstream(

    "Jelaskan 5 langkah dalam machine learning pipeline"

    ):

    print(str(chunk), end="", flush=True)

    print()

    asyncio.run(main())

    Best Practices

    1. Gunakan Dependency Injection

    from semantickernel import Kernel
    
    

    def createkernel(apikey: str, model: str = "gpt-4o") -> Kernel:

    kernel = Kernel()

    kernel.addservice(OpenAIChatCompletion(

    aimodelid=model,

    apikey=apikey,

    serviceid="chat"

    ))

    return kernel

    2. Error Handling yang Proper

    from semantickernel.exceptions import ServiceResponseException
    
    

    async def safeinvoke(kernel, prompt):

    try:

    result = await kernel.invokeprompt(prompt)

    return str(result)

    except ServiceResponseException as e:

    print(f"Service error: {e}")

    return None

    except Exception as e:

    print(f"Unexpected error: {e}")

    return None

    3. Batasi Scope Plugin

    Setiap plugin sebaiknya memiliki satu tanggung jawab yang jelas. Hindari membuat plugin monolitik yang menangani terlalu banyak fungsi.

    class FilePlugin:
    

    @kernelfunction(description="Membaca konten file")

    def readfile(self, path: Annotated[str, "Path file"]) -> str:

    with open(path, "r") as f:

    return f.read()

    @kernelfunction(description="Menulis konten ke file")

    def writefile(

    self,

    path: Annotated[str, "Path file"],

    content: Annotated[str, "Konten yang akan ditulis"]

    ) -> str:

    with open(path, "w") as f:

    f.write(content)

    return f"File written: {path}"

    4. Gunakan Execution Settings

    from semantickernel.connectors.ai.openai.promptexecutionsettings import (
    

    OpenAIChatPromptExecutionSettings,

    )

    settings = OpenAIChatPromptExecutionSettings(

    serviceid="chat",

    temperature=0.7,

    maxtokens=2000,

    topp=0.9,

    )

    result = await kernel.invokeprompt(prompt, settings=settings)

    5. Testing Plugin Functions

    import pytest
    
    

    class TestMathPlugin:

    def setupmethod(self):

    self.plugin = MathPlugin()

    def testadd(self):

    result = self.plugin.add(a=10, b=20)

    assert result == 30

    def testmultiply(self):

    result = self.plugin.multiply(a=5, b=6)

    assert result == 30

    def testpower(self):

    result = self.plugin.power(base=2, exponent=10)

    assert result == 1024

    6. Structured Output dengan Pydantic

    from pydantic import BaseModel, Field
    

    from semantickernel.functions import kernelfunction

    class AnalysisResult(BaseModel):

    sentiment: str = Field(description="positive, negative, atau neutral")

    confidence: float = Field(description="Skor kepercayaan 0-1")

    keytopics: list[str] = Field(description="Topik utama yang terdeteksi")

    summary: str = Field(description="Ringkasan singkat")

    class AnalysisPlugin:

    @kernelfunction(description="Menganalisis sentimen dan topik dari teks")

    async def analyzetext(

    self,

    text: Annotated[str, "Teks yang akan dianalisis"],

    kernel: Kernel

    ) -> str:

    result = await kernel.invokeprompt(

    f"""Analisis teks berikut dan berikan output dalam format JSON:

    • sentiment: positive/negative/neutral
    • confidence: skor 0-1
    • keytopics: daftar topik utama
    • summary: ringkasan singkat

    Teks: {text}

    Output JSON:"""

    )

    return str(result)

    Perbandingan dengan Framework Lain

    | Fitur | Semantic Kernel | LangChain | LlamaIndex |

    |-------|----------------|-----------|------------|

    | Plugin System | Native, strongly typed | Tools/Agents | Tools |

    | Multi-Provider | Ya | Ya | Ya |

    | Memory | Built-in | Add-on | Native |

    | Agent Framework | ChatCompletionAgent | AgentExecutor | Agent |

    | Enterprise Ready | Sangat Baik | Baik | Baik |

    | Learning Curve | Sedang | Rendah-Sedang | Sedang |

    | Bahasa | Python, C#, Java | Python, JS | Python, TS |

    Kesimpulan

    Semantic Kernel adalah framework AI orchestration yang matang dan production-ready dari Microsoft. Dengan arsitektur plugin yang modular, dukungan multi-provider, dan fitur agent yang komprehensif, framework ini sangat cocok untuk membangun aplikasi AI enterprise. Kemampuannya dalam automatic function calling dan multi-agent collaboration membuatnya menjadi pilihan yang kuat untuk project yang membutuhkan integrasi LLM yang terstruktur dan scalable.

    Beberapa poin penting yang perlu diingat:

    • Mulai dari Kernel dan tambahkan service sesuai kebutuhan
    • Gunakan plugin system untuk memisahkan logika bisnis dari prompt
    • Manfaatkan automatic function calling untuk workflow yang lebih natural
    • Implementasikan filter untuk logging dan monitoring di production
    • Pertimbangkan multi-agent pattern untuk tugas yang kompleks
    • Selalu test plugin functions secara independen sebelum mengintegrasikan dengan LLM

    Dengan fondasi yang kuat dari Microsoft dan komunitas yang terus berkembang, Semantic Kernel merupakan investasi yang baik untuk developer yang ingin membangun aplikasi AI yang robust dan enterprise-grade.

    Artikel Terkait

    Tutorial Semantic Router: Routing Cerdas untuk Aplikasi LLM

    Tutorial Semantic Router: Routing Cerdas untuk Aplikasi LLM Semantic Router adalah library Python yang memungkinkan Anda...

    Tutorial Lengkap Llama Stack: Framework Resmi Meta untuk Membangun Aplikasi AI dengan Model Llama

    Tutorial Lengkap Llama Stack: Framework Resmi Meta untuk Membangun Aplikasi AI dengan Model Llama Llama Stack adalah fra...

    Tutorial CAMEL-AI: Framework Multi-Agent Communication untuk Membangun Sistem AI Kolaboratif

    Tutorial Lengkap CAMEL-AI: Framework Multi-Agent Communication untuk Membangun Sistem AI Kolaboratif Penulis: Ruby Abdul...

    Tutorial Zep: Memori Jangka Panjang untuk AI Agent dengan Temporal Knowledge Graph

    Zep: Bikin AI Agent Punya Memori Jangka Panjang dengan Temporal Knowledge Graph Temen-temen, pernah ngobrol sama chatbot...