(यो पाठको भिडियो हेर्न माथि रहेको छविमा क्लिक गर्नुहोस्)
एआई एजेन्ट फ्रेमवर्कहरू ती सफ्टवेयर प्लेटफर्महरू हुन् जसले एआई एजेन्टहरूको सिर्जना, डिप्लोयमेन्ट, र व्यवस्थापनलाई सरल बनाउन डिजाइन गरिएका हुन्छन्। यी फ्रेमवर्कहरूले विकासकर्ताहरूलाई पूर्व-निर्मित कम्पोनेन्टहरू, अब्स्ट्र्याक्शनहरू, र उपकरणहरू प्रदान गर्छन् जसले जटिल एआई प्रणालीहरूको विकासलाई सहज बनाउँछ।
यी फ्रेमवर्कहरूले विकासकर्ताहरूलाई उनीहरूको अनुप्रयोगका अनौठा पक्षहरूमा केन्द्रित हुन मद्दत गर्छन् किनकि तिनीहरूले एआई एजेन्ट विकासका सामान्य चुनौतीहरूमा मानकीकृत दृष्टिकोणहरू प्रदान गर्छन्। तिनीहरूले एआई प्रणाली निर्माणमा स्केलेबिलिटी, पहुँचयोग्यता, र दक्षता वृद्धि गर्छन्।
यो पाठले समेट्नेछ:
यस पाठका लक्ष्यहरू तपाईंलाई बुझ्न मद्दत गर्ने छन्:
परम्परागत एआई फ्रेमवर्कहरूले तपाईंलाई तपाईंका अनुप्रयोगहरूमा एआई समेकन गर्न र ती अनुप्रयोगहरूलाई तलका तरिकाहरूले अझ राम्रो बनाउन मद्दत गर्न सक्छन्:
एआई एजेन्ट फ्रेमवर्कहरू केवल एआई फ्रेमवर्कहरू भन्दा बढी कुरालाई प्रतिनिधित्व गर्छन्। तिनीहरू ती बुद्धिमान एजेन्टहरूको सिर्जना सक्षम बनाउन डिजाइन गरिएका हुन्छन् जसले प्रयोगकर्ताहरू, अन्य एजेन्टहरू, र वातावरणसँग अन्तरक्रिया गरेर विशिष्ट लक्ष्यहरू पूरा गर्न सक्छन्। यी एजेन्टहरूले स्वायत्त व्यवहार प्रदर्शन गर्न, निर्णय लिन, र परिवर्तनशील अवस्थाहरूमा अनुकूलन गर्न सक्छन्। एआई एजेन्ट फ्रेमवर्कहरूले सक्षम बनाउने केही प्रमुख क्षमताहरू हेर्नुहोस्:
सारमा, एजेन्टहरूले तपाईंलाई बढी गर्न अनुमति दिन्छन्, स्वचालनलाई अर्को स्तरमा लैजान्छन्, र वातावरणबाट अनुकूलन र सिक्न सक्ने बढी बुद्धिमान प्रणालीहरू सिर्जना गर्न मद्दत गर्छन्।
यो द्रुत गतिमा परिवर्तन हुने क्षेत्र हो, तर अधिकाँश एआई एजेन्ट फ्रेमवर्कहरूमा केही साझा तत्वहरू छन् जसले छिटो प्रोटोटाइप र पुनरावृत्तिमा मद्दत गर्छन् — जस्तै मोडुलर कम्पोनेन्टहरू, सहकार्यात्मक उपकरणहरू, र वास्तविक-समय सिकाइ। यीमध्ये हेरौं:
Microsoft Semantic Kernel र LangChain जस्ता SDKs ले एआई कनेक्टरहरू, प्रम्प्ट टेम्प्लेटहरू, र मेमोरी व्यवस्थापन जस्ता पूर्व-निर्मित कम्पोनेन्टहरू प्रदान गर्दछन्।
टीमहरूले यीलाई कसरी प्रयोग गर्न सक्छन्: टीमहरूले यी कम्पोनेन्टहरूलाई छिटो जोडेर कार्यशील प्रोटोटाइप सिर्जना गर्न सक्छन् बिना सुरुबाट नै निर्माण गर्नुपर्ने, जसले द्रुत प्रयोग र पुनरावृत्तिलाई सम्भव बनाउँछ।
व्यावहारिक रूपमा कसरी काम गर्छ: तपाईं प्रयोगकर्ताको इनपुटबाट सूचना निकाल्न पूर्व-निर्मित पार्सर प्रयोग गर्न सक्नुहुन्छ, डेटा भण्डारण र फिर्ताका लागि मेमोरी मोड्युल प्रयोग गर्न सक्नुहुन्छ, र प्रयोगकर्तासँग अन्तरक्रिया गर्न प्रम्प्ट जेनेरेटर प्रयोग गर्न सक्नुहुन्छ — ती सबै बिना शून्यबाट यी कम्पोनेन्टहरू बनाएको।
उदाहरण कोड. Semantic Kernel Python र .Net सँग कसरी पूर्व-निर्मित एआई कनेक्टर प्रयोग गरी मोडललाई प्रयोगकर्ताको इनपुटमा प्रतिक्रिया दिन auto-function calling प्रयोग गर्न सकिन्छ भनी उदाहरणहरू तल छन्:
# सेम्यान्टिक कर्नेल पाइथन उदाहरण
import asyncio
from typing import Annotated
from semantic_kernel.connectors.ai import FunctionChoiceBehavior
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion, AzureChatPromptExecutionSettings
from semantic_kernel.contents import ChatHistory
from semantic_kernel.functions import kernel_function
from semantic_kernel.kernel import Kernel
# कुराकानीको सन्दर्भ राख्नको लागि ChatHistory वस्तु परिभाषित गर्नुहोस्
chat_history = ChatHistory()
chat_history.add_user_message("I'd like to go to New York on January 1, 2025")
# यात्रा बुक गर्ने कार्य समावेश गर्ने नमूना प्लगइन परिभाषित गर्नुहोस्
class BookTravelPlugin:
"""A Sample Book Travel Plugin"""
@kernel_function(name="book_flight", description="Book travel given location and date")
async def book_flight(
self, date: Annotated[str, "The date of travel"], location: Annotated[str, "The location to travel to"]
) -> str:
return f"Travel was booked to {location} on {date}"
# कर्नेल सिर्जना गर्नुहोस्
kernel = Kernel()
# नमूना प्लगइनलाई कर्नेल वस्तुमा थप्नुहोस्
kernel.add_plugin(BookTravelPlugin(), plugin_name="book_travel")
# Azure OpenAI AI कनेक्टर परिभाषित गर्नुहोस्
chat_service = AzureChatCompletion(
deployment_name="YOUR_DEPLOYMENT_NAME",
api_key="YOUR_API_KEY",
endpoint="https://<your-resource>.azure.openai.com/",
)
# आटो-फंक्शन कलिंगसहित मोडेल कन्फिगर गर्न अनुरोध सेटिङहरू परिभाषित गर्नुहोस्
request_settings = AzureChatPromptExecutionSettings(function_choice_behavior=FunctionChoiceBehavior.Auto())
async def main():
# दिइएको कुराकानी इतिहास र अनुरोध सेटिङहरूका लागि मोडेलमा अनुरोध गर्नुहोस्
# कर्नेलमा नमूना समावेश छ जुन मोडेलले कल गर्न अनुरोध गर्नेछ
response = await chat_service.get_chat_message_content(
chat_history=chat_history, settings=request_settings, kernel=kernel
)
assert response is not None
"""
Note: In the auto function calling process, the model determines it can invoke the
`BookTravelPlugin` using the `book_flight` function, supplying the necessary arguments.
For example:
"tool_calls": [
{
"id": "call_abc123",
"type": "function",
"function": {
"name": "BookTravelPlugin-book_flight",
"arguments": "{'location': 'New York', 'date': '2025-01-01'}"
}
}
]
Since the location and date arguments are required (as defined by the kernel function), if the
model lacks either, it will prompt the user to provide them. For instance:
User: Book me a flight to New York.
Model: Sure, I'd love to help you book a flight. Could you please specify the date?
User: I want to travel on January 1, 2025.
Model: Your flight to New York on January 1, 2025, has been successfully booked. Safe travels!
"""
print(f"`{response}`")
# उदाहरण AI मोडेल उत्तर: `तपाईंको जनवरी १, २०२५ मा न्यूयोर्क जाने उडान सफलतापूर्वक बुक गरिएको छ। सुरक्षित यात्रा! ✈️🗽`
# मोडेलको प्रतिक्रिया हाम्रो कुराकानी इतिहास सन्दर्भमा थप्नुहोस्
chat_history.add_assistant_message(response.content)
if __name__ == "__main__":
asyncio.run(main())
// Semantic Kernel C# example
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.ChatCompletion;
using System.ComponentModel;
using Microsoft.SemanticKernel.Connectors.AzureOpenAI;
ChatHistory chatHistory = [];
chatHistory.AddUserMessage("I'd like to go to New York on January 1, 2025");
var kernelBuilder = Kernel.CreateBuilder();
kernelBuilder.AddAzureOpenAIChatCompletion(
deploymentName: "NAME_OF_YOUR_DEPLOYMENT",
apiKey: "YOUR_API_KEY",
endpoint: "YOUR_AZURE_ENDPOINT"
);
kernelBuilder.Plugins.AddFromType<BookTravelPlugin>("BookTravel");
var kernel = kernelBuilder.Build();
var settings = new AzureOpenAIPromptExecutionSettings()
{
FunctionChoiceBehavior = FunctionChoiceBehavior.Auto()
};
var chatCompletion = kernel.GetRequiredService<IChatCompletionService>();
var response = await chatCompletion.GetChatMessageContentAsync(chatHistory, settings, kernel);
/*
Behind the scenes, the model recognizes the tool to call, what arguments it already has (location) and (date)
{
"tool_calls": [
{
"id": "call_abc123",
"type": "function",
"function": {
"name": "BookTravelPlugin-book_flight",
"arguments": "{'location': 'New York', 'date': '2025-01-01'}"
}
}
]
*/
Console.WriteLine(response.Content);
chatHistory.AddMessage(response!.Role, response!.Content!);
// Example AI Model Response: Your flight to New York on January 1, 2025, has been successfully booked. Safe travels! ✈️🗽
// Define a plugin that contains the function to book travel
public class BookTravelPlugin
{
[KernelFunction("book_flight")]
[Description("Book travel given location and date")]
public async Task<string> BookFlight(DateTime date, string location)
{
return await Task.FromResult( $"Travel was booked to {location} on {date}");
}
}
यस उदाहरणबाट तपाईंले देख्न सक्नुहुने कुरा के हो भने, तपाईंले प्रयोगकर्ताको इनपुटबाट मूल जानकारी (जस्तै उडान बुकिङ अनुरोधको सुरुस्थान, गन्तव्य, र मिति) निकाल्न पूर्व-निर्मित पार्सरलाई कसरी उपयोग गर्न सक्नुहुन्छ। यो मोडुलर दृष्टिकोणले तपाईंलाई उच्च-स्तरीय तर्कमा ध्यान केन्द्रित गर्न अनुमति दिन्छ।
CrewAI, Microsoft AutoGen, र Semantic Kernel जस्ता फ्रेमवर्कहरूले एकैसाथ काम गर्न सक्ने बहु एजेन्टहरूको सिर्जनालाई सहज बनाउँछन्।
टीमहरूले यीलाई कसरी प्रयोग गर्न सक्छन्: टीमहरूले विशेष भूमिकाहरू र कार्यहरू भएका एजेन्टहरू डिजाइन गर्न सक्छन्, जसले तिनीहरूलाई सहकार्यात्मक कार्यप्रवाहहरूको परीक्षण र परिष्करण गर्न र समग्र प्रणाली दक्षता सुधार गर्न सक्षम बनाउँछ।
व्यावहारिक रूपमा कसरी काम गर्छ: तपाईंले एजेन्टहरूको एउटा टोली सिर्जना गर्न सक्नुहुन्छ जहाँ प्रत्येक एजेन्टसँग विशिष्ट कार्य हुन्छ, जस्तै डेटा पुनःप्राप्ति, विश्लेषण, वा निर्णय-निर्माण। यी एजेन्टहरू संवाद र जानकारी साझा गरेर साझा लक्ष्य पूरा गर्न सक्छन्, जस्तै प्रयोगकर्ताको प्रश्न उत्तर दिनु वा कुनै कार्य पूरा गर्नु।
उदाहरण कोड (AutoGen):
# एजेन्टहरू सिर्जना गर्दै, त्यसपछि उनीहरू सँगै काम गर्न सक्ने राउन्ड रोबिन तालिका सिर्जना गर्दै, यस केसमा क्रम अनुसार
# डाटा पुनःप्राप्ति एजेण्ट
# डाटा विश्लेषण एजेण्ट
# निर्णय निर्माण एजेण्ट
agent_retrieve = AssistantAgent(
name="dataretrieval",
model_client=model_client,
tools=[retrieve_tool],
system_message="Use tools to solve tasks."
)
agent_analyze = AssistantAgent(
name="dataanalysis",
model_client=model_client,
tools=[analyze_tool],
system_message="Use tools to solve tasks."
)
# प्रयोगकर्ताले "APPROVE" भन्छन् भने संवाद समाप्त हुन्छ
termination = TextMentionTermination("APPROVE")
user_proxy = UserProxyAgent("user_proxy", input_func=input)
team = RoundRobinGroupChat([agent_retrieve, agent_analyze, user_proxy], termination_condition=termination)
stream = team.run_stream(task="Analyze data", max_turns=10)
# स्क्रिप्टमा चलाउँदा asyncio.run(...) प्रयोग गर्नुहोस्।
await Console(stream)
अघिको कोडमा तपाईंले देख्नुहुने कुरा यो हो कि कसरी बहु एजेन्टहरू सँगै काम गरेर डेटा विश्लेषण गर्ने कार्य सिर्जना गर्न सकिन्छ। प्रत्येक एजेन्टले विशेष कार्य गर्छ, र चाहिने परिणाम प्राप्त गर्न एजेन्टहरूलाई समन्वय गरेर कार्य निष्पादन गरिन्छ। विशेष भूमिकाहरू भएका समर्पित एजेन्टहरू सिर्जना गर्दा कार्य दक्षता र प्रदर्शन सुधार गर्न सकिन्छ।
उन्नत फ्रेमवर्कहरूले वास्तविक-समय सन्दर्भको समझ र अनुकूलनका लागि क्षमताहरू प्रदान गर्छन्।
टीमहरूले यीलाई कसरी प्रयोग गर्न सक्छन्: टीमहरूले यस्तो फिडब्याक लूपहरू लागू गर्न सक्छन् जहाँ एजेन्टहरूले अन्तरक्रियाबाट सिक्छन् र आफ्नो व्यवहार गतिशील रूपमा समायोजन गर्छन्, जसले निरन्तर सुधार र क्षमताहरूको परिष्कार सम्भव बनाउँछ।
व्यावहारिक रूपमा कसरी काम गर्छ: एजेन्टहरूले प्रयोगकर्ताको फिडब्याक, वातावरणीय डेटा, र कार्य परिणामहरू विश्लेषण गरेर आफ्नो ज्ञान आधार अद्यावधिक गर्न, निर्णय-निर्माण एल्गोरिथ्म समायोजन गर्न, र समयसँगै प्रदर्शन सुधार गर्न सक्छन्। यो पुनरावृत्तिमूलक सिकाइ प्रक्रिया एजेन्टहरूलाई परिवर्तनशील परिस्थितिहरू र प्रयोगकर्ता प्राथमिकताहरूमा अनुकूलन गर्न सक्षम बनाउँछ, जसले समग्र प्रणाली प्रभावकारिता बढाउँछ।
यी फ्रेमवर्कहरू तुलना गर्ने अनेक तरिकाहरू छन्, तर डिजाइन, क्षमताहरू, र लक्षित प्रयोग केसहरूको सन्दर्भमा केही प्रमुख फरकहरू तल हेर्नुहोस्:
AutoGen Microsoft Research को AI Frontiers Lab द्वारा विकास गरिएको ओपन-सोर्स फ्रेमवर्क हो। यसले इभेन्ट-ड्राइवेन, वितरण गरिएको agentic अनुप्रयोगहरूमा केन्द्रित छ, जसले धेरै LLMs र SLMs, उपकरणहरू, र उन्नत बहु-एजेन्ट डिजाइन ढाँचाहरू सक्षम बनाउँछ।
AutoGen को केन्द्रिय अवधारणा एजेन्टहरूमा आधारित छ, जुन स्वायत्त इकाइहरू हुन् जसले आफ्नो वातावरणलाई ग्रहण गर्न, निर्णय लिन, र विशिष्ट लक्ष्यहरू प्राप्त गर्न कार्यहरू गर्न सक्छन्। एजेन्टहरूले एसिन्क्रोनस सन्देशहरू मार्फत सञ्चार गर्छन्, जसले तिनीहरूलाई स्वतन्त्र र समानान्तर काम गर्न अनुमति दिन्छ, प्रणालीको स्केलेबिलिटी र प्रत्युत्तरक्षमता वृद्धि गर्दछ।
एजेन्टहरू अभिनेता मोडेलमा आधारित छन्. विकिपिडियाका अनुसार, एक अभिनेता समवर्ती गणनाको आधारभूत निर्माण ब्लक हो। प्राप्त गरिएको सन्देशको प्रतिक्रिया स्वरूप, एक अभिनेता गर्न सक्छ: स्थानीय निर्णय लिनु, थप अभिनेता सिर्जना गर्नु, थप सन्देशहरू पठाउनु, र प्राप्त हुने अर्को सन्देशमा कसरी प्रतिक्रिया दिने निर्धारण गर्नु।
प्रयोग केसहरू: कोड जेनेरेसन स्वचालितकरण, डेटा विश्लेषण कार्यहरू, र योजना र अनुसन्धान कार्यहरूको लागि अनुकूलित एजेन्टहरू निर्माण गर्नु।
यहाँ AutoGen का केही महत्वपूर्ण केन्द्रिय अवधारणाहरू छन्:
यहाँ एक छोटो कोड स्नेपेट छ जहाँ तपाईंले आफ्नै च्याट क्षमतासहित एजेन्ट सिर्जना गर्नुहुन्छ:
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.messages import TextMessage
from autogen_ext.models.openai import OpenAIChatCompletionClient
class MyAgent(RoutedAgent):
def __init__(self, name: str) -> None:
super().__init__(name)
model_client = OpenAIChatCompletionClient(model="gpt-4o")
self._delegate = AssistantAgent(name, model_client=model_client)
@message_handler
async def handle_my_message_type(self, message: MyMessageType, ctx: MessageContext) -> None:
print(f"{self.id.type} received message: {message.content}")
response = await self._delegate.on_messages(
[TextMessage(content=message.content, source="user")], ctx.cancellation_token
)
print(f"{self.id.type} responded: {response.chat_message.content}")
अघिको कोडमा, MyAgent सिर्जना गरिएको छ र RoutedAgent बाट इनहेरिट गरेको छ। यससँग एउटा संदेश ह्यान्डलर छ जसले सन्देशको सामग्री प्रिन्ट गर्छ र त्यसपछि AssistantAgent डेलिगेट प्रयोग गरी प्रतिक्रिया पठाउँछ। विशेष गरी ध्यान दिनुहोस् कि हामीले self._delegate मा AssistantAgent को एउटा इन्स्टेन्स असाइन गरेका छौं जुन एक पूर्व-निर्मित एजेन्ट हो र च्याट कम्प्लिशनहरू ह्यान्डल गर्न सक्छ।
अब AutoGen लाई यो एजेन्ट प्रकारका बारेमा जानकारी गराएर प्रोग्राम आरम्भ गरौं:
# main.py
runtime = SingleThreadedAgentRuntime()
await MyAgent.register(runtime, "my_agent", lambda: MyAgent())
runtime.start() # ब्याकग्राउण्डमा सन्देशहरू प्रशोधन गर्न सुरु गर्नुहोस्।
await runtime.send_message(MyMessageType("Hello, World!"), AgentId("my_agent", "default"))
अघिको कोडमा एजेन्टहरू रनटाइममा दर्ता गरिएका छन् र त्यसपछि एजेन्टतर्फ सन्देश पठाइन्छ जसको परिणामस्वरूप तलको आउटपुट आउँछ:
# Output from the console:
my_agent received message: Hello, World!
my_assistant received message: Hello, World!
my_assistant responded: Hello! How can I assist you today?
बहु एजेन्टहरू. AutoGen ले धेरै एजेन्टहरू सिर्जना गर्न समर्थन गर्दछ जसले जटिल कार्यहरू पूरा गर्न सँगै काम गर्न सक्छन्। एजेन्टहरू सञ्चार गर्न, जानकारी साझा गर्न, र आफ्ना क्रियाहरू समन्वय गर्न सक्छन् जसले समस्याहरू थप प्रभावकारी रूपमा समाधान गर्न सहयोग पुर्याउँछ। बहु-एजेन्ट प्रणाली सिर्जना गर्न, तपाईं विभिन्न प्रकारका एजेन्टहरू परिभाषित गर्न सक्नुहुन्छ जसमा विशिष्ट कार्यहरू र भूमिकाहरू हुन्छन्, जस्तै डेटा पुनःप्राप्ति, विश्लेषण, निर्णय-निर्माण, र प्रयोगकर्ता अन्तरक्रिया। यस्तो सिर्जनाले कस्तो देखिन्छ भन्ने हाम्रो समझ पाउन तल हेर्नुहोस्:
editor_description = "Editor for planning and reviewing the content."
# एजेन्ट घोषणा गर्ने उदाहरण
editor_agent_type = await EditorAgent.register(
runtime,
editor_topic_type, # एजेन्ट प्रकारको रूपमा टोपिक प्रकार प्रयोग गर्दै।
lambda: EditorAgent(
description=editor_description,
group_chat_topic_type=group_chat_topic_type,
model_client=OpenAIChatCompletionClient(
model="gpt-4o-2024-08-06",
# api_key="YOUR_API_KEY",
),
),
)
# संक्षिप्तताका लागि बाँकी घोषणा छोटो पारिएको
# समूह च्याट
group_chat_manager_type = await GroupChatManager.register(
runtime,
"group_chat_manager",
lambda: GroupChatManager(
participant_topic_types=[writer_topic_type, illustrator_topic_type, editor_topic_type, user_topic_type],
model_client=OpenAIChatCompletionClient(
model="gpt-4o-2024-08-06",
# api_key="YOUR_API_KEY",
),
participant_descriptions=[
writer_description,
illustrator_description,
editor_description,
user_description
],
),
)
अघिको कोडमा हामीसँग GroupChatManager छ जुन रनटाइमसँग दर्ता गरिएको छ। यो म्यानेजर विभिन्न प्रकारका एजेन्टहरू (जस्तै लेखकहरू, चित्रकारहरू, सम्पादकहरू, र प्रयोगकर्ताहरू) बीचको अन्तरक्रियालाई समन्वय गर्ने जिम्मेवारी लिन्छ।
Stand-alone runtime. यो एकल-प्रोसेस अनुप्रयोगहरूको लागि राम्रो विकल्प हो जहाँ सबै एजेन्टहरू एउटै प्रोग्रामिङ भाषामा कार्यान्वित गरिएका छन् र एउटै प्रोसेसमा चल्छन्। यसले कसरी काम गर्छ भन्ने एक चित्र यहाँ छ:
Stand-alone runtime
Application stack
एजेन्टहरू रनटाइममार्फत सन्देशहरू मार्फत सञ्चार गर्छन्, र रनटाइमले एजेन्टहरूको लाइफसाइकल व्यवस्थापन गर्छ
वितरित एजेन्ट रनटाइम, यो बहु-प्रोसेस अनुप्रयोगहरूको लागि उपयुक्त छ जहाँ एजेन्टहरू फरक प्रोग्रामिङ भाषाहरूमा कार्यान्वित हुन सक्छन् र फरक मेसिनहरूमा चलिरहन सक्छन्। कसरी काम गर्छ भन्ने एक चित्र यहाँ छ:
Semantic Kernel एक एन्त्रप्राइज-रेडी एआई ओरकेस्ट्रेशन SDK हो। यसमा एआई र मेमोरी कनेक्टर्स छन्, साथै एउटा एजेन्ट फ्रेमवर्क पनि समावेश छ।
पहिले केही केन्द्रिय कम्पोनेन्टहरू कभर गरौं:
एआई कनेक्टर्स: यो बाह्य एआई सेवाहरू र डेटा स्रोतहरूसँगको इन्टरफेस हो जुन Python र C# दुबैमा प्रयोग गर्न सकिन्छ।
# सेमेन्टिक कर्नेल पाइथन
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion
from semantic_kernel.kernel import Kernel
kernel = Kernel()
kernel.add_service(
AzureChatCompletion(
deployment_name="your-deployment-name",
api_key="your-api-key",
endpoint="your-endpoint",
)
)
// Semantic Kernel C#
using Microsoft.SemanticKernel;
// Create kernel
var builder = Kernel.CreateBuilder();
// Add a chat completion service:
builder.Services.AddAzureOpenAIChatCompletion(
"your-resource-name",
"your-endpoint",
"your-resource-key",
"deployment-model");
var kernel = builder.Build();
यहाँ तपाईंले कसरी कर्नेल सिर्जना गर्ने र एउटा च्याट कम्प्लिशन सेवा थप्ने सरल उदाहरण पाउनुहुन्छ। Semantic Kernel ले बाह्य एआई सेवासँग जडान सिर्जना गर्छ, यस अवस्थामा Azure OpenAI Chat Completion सँग।
प्लगइनहरू: यीले एउटा अनुप्रयोगले प्रयोग गर्न सक्ने फङ्सनहरू समाहित गर्छन्। त्यहाँ तयार बनेका प्लगइनहरू छन् र तपाईंले कस्टम प्लगइनहरू पनि सिर्जना गर्न सक्नुहुन्छ। सम्बन्धित अवधारणा “प्रम्प्ट फंक्शनहरू” हो। फङ्सन कल गर्ने प्राकृतिक भाषिक संकेतहरू प्रदान गर्नुको सट्टा, तपाईं मोडलमा निश्चित फङ्सनहरू प्रसारित गर्नुहुन्छ। हालको च्याट सन्दर्भको आधारमा, मोडलले अनुरोध वा सोधपुछ पूरा गर्न यीमध्ये कुनै एक फङ्सन कल गर्ने छनौट गर्न सक्छ। यहाँ एउटा उदाहरण छ:
from semantic_kernel.connectors.ai.open_ai.services.azure_chat_completion import AzureChatCompletion
async def main():
from semantic_kernel.functions import KernelFunctionFromPrompt
from semantic_kernel.kernel import Kernel
kernel = Kernel()
kernel.add_service(AzureChatCompletion())
user_input = input("User Input:> ")
kernel_function = KernelFunctionFromPrompt(
function_name="SummarizeText",
prompt="""
Summarize the provided unstructured text in a sentence that is easy to understand.
Text to summarize:
""",
)
response = await kernel_function.invoke(kernel=kernel, user_input=user_input)
print(f"Model Response: {response}")
"""
Sample Console Output:
User Input:> I like dogs
Model Response: The text expresses a preference for dogs.
"""
if __name__ == "__main__":
import asyncio
asyncio.run(main())
var userInput = Console.ReadLine();
// Define semantic function inline.
string skPrompt = @"Summarize the provided unstructured text in a sentence that is easy to understand.
Text to summarize: ";
// create the function from the prompt
KernelFunction summarizeFunc = kernel.CreateFunctionFromPrompt(
promptTemplate: skPrompt,
functionName: "SummarizeText"
);
//then import into the current kernel
kernel.ImportPluginFromFunctions("SemanticFunctions", [summarizeFunc]);
यहाँ, तपाईंले पहिले एउटा टेम्प्लेट प्रम्प्ट skPrompt पाउनुहुन्छ जसले प्रयोगकर्तालाई पाठ इनपुट गर्न ठाउँ छोड्छ, $userInput। त्यसपछि तपाईं कर्नेल फङ्सन SummarizeText सिर्जना गर्नुहुन्छ र त्यसपछि यो SemanticFunctions नामको प्लगइनको साथ कर्नेलमा इम्पोर्ट गर्नुहुन्छ। फङ्सनको नाम जुन Semantic Kernel लाई फङ्सनले के गर्छ र कहिले कल हुनुपर्ने हो बुझ्न मद्दत गर्छ भन्ने कुरामा ध्यान दिनुहोस्।
नेटिभ फङ्सन: त्यहाँ नेटिभ फङ्सनहरू पनि छन् जुन फ्रेमवर्कले सिधै कल गर्न सक्छ ताकि कार्य सम्पन्न होओस्। यो जस्तै फाइलबाट सामग्री पुनःप्राप्त गर्ने फङ्सनको उदाहरण हो:
public class NativeFunctions {
[SKFunction, Description("Retrieve content from local file")]
public async Task<string> RetrieveLocalFile(string fileName, int maxSize = 5000)
{
string content = await File.ReadAllTextAsync(fileName);
if (content.Length <= maxSize) return content;
return content.Substring(0, maxSize);
}
}
//Import native function
string plugInName = "NativeFunction";
string functionName = "RetrieveLocalFile";
//To add the functions to a kernel use the following function
kernel.ImportPluginFromType<NativeFunctions>();
मेमोरी: एआई अनुप्रयोगहरूका लागि सन्दर्भ व्यवस्थापनलाई अब्स्ट्र्याक्ट र सरल बनाउँछ। मेमोरीको विचार यो हो कि LLM ले यसबारे जान्नुपर्छ। तपाईं यो जानकारीलाई भेक्टर स्टोरमा स्टोर गर्न सक्नुहुन्छ जुन अन्ततः इन-मेमोरी डाटाबेस वा भेक्टर डाटाबेस वा त्यस्तै केहि हुन्छ। यहाँ एउटा धेरै सरल परिस्थितिको उदाहरण छ जहाँ तथ्यहरू मेमोरीमा थपिन्छन्:
var facts = new Dictionary<string,string>();
facts.Add(
"Azure Machine Learning; https://learn.microsoft.com/azure/machine-learning/",
@"Azure Machine Learning is a cloud service for accelerating and
managing the machine learning project lifecycle. Machine learning professionals,
data scientists, and engineers can use it in their day-to-day workflows"
);
facts.Add(
"Azure SQL Service; https://learn.microsoft.com/azure/azure-sql/",
@"Azure SQL is a family of managed, secure, and intelligent products
that use the SQL Server database engine in the Azure cloud."
);
string memoryCollectionName = "SummarizedAzureDocs";
foreach (var fact in facts) {
await memoryBuilder.SaveReferenceAsync(
collection: memoryCollectionName,
description: fact.Key.Split(";")[1].Trim(),
text: fact.Value,
externalId: fact.Key.Split(";")[2].Trim(),
externalSourceName: "Azure Documentation"
);
}
यी तथ्यहरू त्यसपछि मेमोरी संग्रह SummarizedAzureDocs मा संग्रहीत गरिन्छ। यो एक धेरै सरल उदाहरण हो, तर तपाईंले देख्न सक्नुहुन्छ कसरी तपाईं LLM ले प्रयोग गर्न मेमोरीमा जानकारी भण्डारण गर्न सक्नुहुन्छ।
त्यसैले त्यो Semantic Kernel फ्रेमवर्कका आधारहरू हुन्, Agent Framework को ke बारेमा के भनौं?
Azure AI Agent Service हालैको थपिएको सेवा हो, जुन Microsoft Ignite 2024 मा प्रस्तुत गरिएको थियो। यसले Llama 3, Mistral, र Cohere जस्ता open-source LLMs लाई सिधै कल गर्ने जस्ता लचिलो मोडेलहरूसँग AI एजेन्टहरू विकास र परिनियोजन गर्न अनुमति दिन्छ।
Azure AI Agent Service ले बलियो उद्यम सुरक्षा संयन्त्र र डेटा भण्डारण विधिहरू प्रदान गर्छ, जसले यसलाई उद्यम अनुप्रयोगहरूका लागि उपयुक्त बनाउँछ।
यो AutoGen र Semantic Kernel जस्ता बहु-एजेन्ट ऑर्केस्ट्रेशन फ्रेमवर्कहरूसँग आउट-ऑफ-द-बक्स काम गर्छ।
यो सेवा हाल Public Preview मा छ र एजेन्टहरू निर्माण गर्न Python र C# समर्थन गर्दछ।
Semantic Kernel Python प्रयोग गरेर, हामी प्रयोगकर्ताद्वारा परिभाषित प्लगइन सहित एउटा Azure AI Agent सिर्जना गर्न सक्छौं:
import asyncio
from typing import Annotated
from azure.identity.aio import DefaultAzureCredential
from semantic_kernel.agents import AzureAIAgent, AzureAIAgentSettings, AzureAIAgentThread
from semantic_kernel.contents import ChatMessageContent
from semantic_kernel.contents import AuthorRole
from semantic_kernel.functions import kernel_function
# नमूना को लागि एउटा नमुना प्लगइन परिभाषित गर्नुहोस्
class MenuPlugin:
"""A sample Menu Plugin used for the concept sample."""
@kernel_function(description="Provides a list of specials from the menu.")
def get_specials(self) -> Annotated[str, "Returns the specials from the menu."]:
return """
Special Soup: Clam Chowder
Special Salad: Cobb Salad
Special Drink: Chai Tea
"""
@kernel_function(description="Provides the price of the requested menu item.")
def get_item_price(
self, menu_item: Annotated[str, "The name of the menu item."]
) -> Annotated[str, "Returns the price of the menu item."]:
return "$9.99"
async def main() -> None:
ai_agent_settings = AzureAIAgentSettings.create()
async with (
DefaultAzureCredential() as creds,
AzureAIAgent.create_client(
credential=creds,
conn_str=ai_agent_settings.project_connection_string.get_secret_value(),
) as client,
):
# एजेन्ट परिभाषा सिर्जना गर्नुहोस्
agent_definition = await client.agents.create_agent(
model=ai_agent_settings.model_deployment_name,
name="Host",
instructions="Answer questions about the menu.",
)
# परिभाषित क्लाइन्ट र एजेन्ट परिभाषा प्रयोग गरेर AzureAI एजेन्ट सिर्जना गर्नुहोस्
agent = AzureAIAgent(
client=client,
definition=agent_definition,
plugins=[MenuPlugin()],
)
# कुराकानी राख्नको लागि थ्रेड सिर्जना गर्नुहोस्
# यदि कुनै थ्रेड प्रदान गरिएको छैन भने, नयाँ थ्रेड सिर्जना हुनेछ
# सुरुआत्मक प्रतिक्रिया संग फिर्ता हुनेछ
thread: AzureAIAgentThread | None = None
user_inputs = [
"Hello",
"What is the special soup?",
"How much does that cost?",
"Thank you",
]
try:
for user_input in user_inputs:
print(f"# User: '{user_input}'")
# निर्दिष्ट थ्रेडका लागि एजेन्टलाई आह्वान गर्नुहोस्
response = await agent.get_response(
messages=user_input,
thread_id=thread,
)
print(f"# {response.name}: {response.content}")
thread = response.thread
finally:
await thread.delete() if thread else None
await client.agents.delete_agent(agent.id)
if __name__ == "__main__":
asyncio.run(main())
Azure AI Agent Service का निम्न प्रमुख अवधारणाहरू छन्:
Agent. Azure AI Agent Service ले Microsoft Foundry सँग एकीकृत गर्दछ। AI Foundry भित्र, एक AI Agent ले प्रश्नहरूको जवाफ दिने (RAG), कार्यहरू प्रदर्शन गर्ने, वा सम्पूर्ण वर्कफ्लोहरू स्वचालित गर्ने “स्मार्ट” माईक्रोसर्भिसको रूपमा कार्य गर्दछ। यसले जेनेरेटिभ AI मोडेलहरूको शक्ति र वास्तविक-विश्व डेटा स्रोतहरूमा पहुँच र अन्तरक्रिया गर्न अनुमति दिने उपकरणहरूलाई संयोजन गरेर यसलाई हासिल गर्छ। यहाँ एउटा एजेन्टको उदाहरण छ:
agent = project_client.agents.create_agent(
model="gpt-4o-mini",
name="my-agent",
instructions="You are helpful agent",
tools=code_interpreter.definitions,
tool_resources=code_interpreter.resources,
)
यस उदाहरणमा, gpt-4o-mini मोडेल, नाम my-agent, र निर्देशहरू You are helpful agent सहित एउटा एजेन्ट सिर्जना गरिएको छ। एजेन्टलाई कोड व्याख्या कार्यहरू प्रदर्शन गर्नका लागि उपकरण र स्रोतहरूले सुसज्जित गरिएको छ।
Thread and messages. थ्रेड अर्को महत्वपूर्ण अवधारणा हो। यसले एजेन्ट र प्रयोगकर्ताको बीचको संवाद वा अन्तरक्रियालाई प्रतिनिधित्व गर्दछ। थ्रेडहरूलाई संवादको प्रगति ट्रयाक गर्न, सन्दर्भ जानकारी भण्डारण गर्न, र अन्तरक्रियाको स्थिति व्यवस्थापन गर्न प्रयोग गर्न सकिन्छ। यहाँ एउटा थ्रेडको उदाहरण छ:
thread = project_client.agents.create_thread()
message = project_client.agents.create_message(
thread_id=thread.id,
role="user",
content="Could you please create a bar chart for the operating profit using the following data and provide the file to me? Company A: $1.2 million, Company B: $2.5 million, Company C: $3.0 million, Company D: $1.8 million",
)
# Ask the agent to perform work on the thread
run = project_client.agents.create_and_process_run(thread_id=thread.id, agent_id=agent.id)
# Fetch and log all messages to see the agent's response
messages = project_client.agents.list_messages(thread_id=thread.id)
print(f"Messages: {messages}")
विगतको कोडमा, एउटा थ्रेड सिर्जना गरिएको छ। त्यसपछि, थ्रेडमा एउटा सन्देश पठाइन्छ। create_and_process_run कल गरेर, एजेन्टलाई थ्रेडमा काम गर्न भनिन्छ। अन्ततः, सन्देशहरू फेच गरी लग गरिन्छ ताकि एजेन्टको जवाफ हेर्न सकियोस्। सन्देशहरूले प्रयोगकर्ता र एजेन्टबीचको संवादको प्रगति संकेत गर्दछन्। यो पनि महत्त्वपूर्ण छ कि सन्देशहरू विभिन्न प्रकारका हुन सक्छन् जस्तै लेख, छवि, वा फाइल — अर्थात् एजेन्टको कामले उदाहरणका लागि छवि वा लेखीय जवाफ उत्पन्न गर्न सक्छ। विकासकर्ताका रूपमा, तपाईंले यसको प्रयोग गरेर जवाफलाई थप प्रक्रिया गर्न वा प्रयोगकर्तालाई प्रस्तुत गर्न सक्नुहुन्छ।
Integrates with other AI frameworks. Azure AI Agent service AutoGen र Semantic Kernel जस्ता अन्य फ्रेमवर्कहरूसँग अन्तरक्रिया गर्न सक्छ, जसको अर्थ तपाईंले यी फ्रेमवर्कहरूमध्ये कुनै एकमा तपाईंको एपको भाग बनाउनु र उदाहरणका लागि Agent service लाई ऑर्केस्ट्रेटरको रूपमा प्रयोग गर्नु वा सम्पूर्ण रूपमा Agent service मा सबै निर्माण गर्नु सक्नुहुन्छ।
Use Cases: Azure AI Agent Service लाई सुरक्षित, स्केलेबल, र लचीला AI एजेन्ट परिनियोजन आवश्यक पर्ने उद्यम अनुप्रयोगहरूको लागि डिजाइन गरिएको छ।
यी फ्रेमवर्कहरूबीच धेरै ओभरलाप जस्तो लाग्छ, तर तिनीहरूको डिजाइन, क्षमता, र लक्षित प्रयोग केसका हिसाबले केही प्रमुख भिन्नताहरू छन्:
अझै पक्का हुनुहुन्न कुन रोज्ने?
हामी केहि सामान्य प्रयोग केसहरू मार्फत गएर तपाईंलाई मद्दत गर्न सक्छौं कि हेर्नुहोस्:
Q: म अन्वेषण गर्दैछु, सिक्दैछु र प्रमाण-प्रविधि (proof-of-concept) एजेन्ट अनुप्रयोगहरू बनाइरहेको छु, र म छिटो निर्माण र परीक्षण गर्न सक्षम हुन चाहन्छु
A: AutoGen यस परिदृश्यका लागि राम्रो विकल्प हुनेछ, किनकि यसले घटना-चालित, वितरित एजेन्टिक अनुप्रयोगहरूमा केन्द्रित छ र उन्नत बहु-एजेन्ट डिजाइन ढाँचाहरूलाई समर्थन गर्दछ।
Q: यस प्रयोग केसका लागि AutoGen लाई Semantic Kernel र Azure AI Agent Serviceभन्दा उत्तम बनाउने के हो?
A: AutoGen विशेष रूपमा घटना-चालित, वितरित एजेन्टिक अनुप्रयोगहरूका लागि डिजाइन गरिएको हो, जसले कोड उत्पादन र डेटा विश्लेषण कार्यहरूलाई स्वचालित गर्न उपयुक्त बनाउँछ। यसले जटिल बहु-एजेन्ट प्रणालीहरू कुशलतापूर्वक निर्माण गर्न आवश्यक उपकरण र क्षमताहरू प्रदान गर्दछ।
Q: सुनिँदैमा Azure AI Agent Service पनि यहाँ काम गर्न सक्छ, यसमा कोड जेनेरेशन र थपका लागि उपकरणहरू छन् भने?
A: हो, Azure AI Agent Service एजेन्टहरूको लागि एक प्लेटफर्म सेवा हो र बहु मोडेलहरू, Azure AI Search, Bing Search र Azure Functions का लागि निर्मित क्षमताहरू थप गर्दछ। यसले Foundry Portal मा तपाईंका एजेन्टहरू सजिलै बनाउने र स्केलमा परिनियोजन गर्ने कामलाई सजिलो बनाउँछ।
Q: म अझै अलमलमा छु, कृपया मलाई एउटा विकल्प मात्र दिनुहोस्
A: एउटा उत्कृष्ट विकल्प भनेको पहिले Semantic Kernel मा तपाईंको आवेदन निर्माण गर्नु र त्यसपछि Azure AI Agent Service मार्फत तपाईंको एजेन्ट परिनियोजन गर्नु हो। यसले तपाईंलाई सजिलैसँग तपाईंका एजेन्टहरूलाई परिपक्व बनाउने र Semantic Kernel मा बहु-एजेन्ट प्रणालीहरू निर्माण गर्ने शक्तिलाई उपयोग गर्ने मौका दिन्छ। थप रूपमा, Semantic Kernel सँग AutoGen मा एक कनेक्टर छ, जसले दुवै फ्रेमवर्कहरूलाई सँगै प्रयोग गर्न सजिलो बनाउँछ।
हामीले मुख्य भिन्नताहरूलाई तालिकामा सारांश गरौं:
| Framework | Focus | Core Concepts | Use Cases |
|---|---|---|---|
| AutoGen | घटना-चालित, वितरित एजेन्टिक अनुप्रयोगहरू | Agents, Personas, Functions, Data | कोड जेनेरेशन, डेटा विश्लेषण कार्यहरू |
| Semantic Kernel | मानव-जस्तै पाठलाई बुझ्न र उत्पादन गर्न | Agents, Modular Components, Collaboration | प्राकृतिक भाषा बुझाइ, सामग्री सिर्जना |
| Azure AI Agent Service | लचिला मोडेलहरू, उद्यम सुरक्षा, कोड जेनेरेशन, उपकरण कल गर्ने क्षमता | Modularity, Collaboration, Process Orchestration | सुरक्षित, स्केलेबल, र लचिला AI एजेन्ट परिनियोजन |
यी फ्रेमवर्कहरूमध्ये प्रत्येकको लागि आदर्श प्रयोग केस के हो?
उत्तर हो, तपाइँले आफ्नो अवस्थित Azure इकोसिस्टम उपकरणहरू सिधै Azure AI Agent Service सँग एकीकृत गर्न सक्नुहुन्छ, विशेष गरी किनकि यो अन्य Azure सेवाहरूसँग निर्बाध रूपमा काम गर्न बनाईएको हो। उदाहरणका लागि, तपाईं Bing, Azure AI Search, र Azure Functions एकीकृत गर्न सक्नुहुन्छ। Microsoft Foundry सँग पनि गहिरो एकीकरण छ।
AutoGen र Semantic Kernel का लागि पनि, तपाईं Azure सेवाहरूसँग एकीकृत गर्न सक्नुहुन्छ, तर यसले तपाईंको कोडबाट Azure सेवाहरू कल गर्न आवश्यक पर्न सक्छ। एक अर्को तरिका भनेको एजेन्टहरूबाट Azure सेवाहरूसँग अन्तरक्रिया गर्न Azure SDKs प्रयोग गर्नु हो। थप रूपमा, जस्तै पहिले उल्लेख गरिएको छ, तपाईं AutoGen वा Semantic Kernel मा निर्माण गरिएका एजेन्टहरूको लागि ऑर्केस्ट्रेटरको रूपमा Azure AI Agent Service प्रयोग गर्न सक्नुहुन्छ जसले Azure इकोसिस्टममा सजिलै पहुँच दिन्छ।
Join the Microsoft Foundry Discord अन्य सिक्दै गरेका व्यक्तिहरूसँग भेटघाट गर्न, कार्यालय समयहरूमा भाग लिन र तपाईंका AI Agents सम्बन्धी प्रश्नहरूको जवाफ पाउन।
Introduction to AI Agents and Agent Use Cases
Understanding Agentic Design Patterns
अस्वीकरण: यो दस्तावेज AI अनुवाद सेवा Co‑op Translator (https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको हो। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटि वा अपूर्णता हुन सक्छ। मूल दस्तावेजलाई यसको मूल भाषामा रहेको प्रतिलिपि नै आधिकारिक स्रोत मान्नुहोस्। महत्वपूर्ण जानकारीका लागि पेशेवर मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार छैनौं।