(اوپر دی گئی تصویر پر کلک کریں تاکہ اس سبق کی ویڈیو دیکھ سکیں)
AI ایجنٹ فریم ورک ایسے سافٹ ویئر پلیٹ فارمز ہیں جو AI ایجنٹس کی تخلیق، تعیناتی، اور انتظام کو آسان بناتے ہیں۔ یہ فریم ورک ڈویلپرز کو پہلے سے تیار کردہ اجزاء، خلاصے، اور ٹولز فراہم کرتے ہیں جو پیچیدہ AI سسٹمز کی ترقی کو آسان بناتے ہیں۔
یہ فریم ورک ڈویلپرز کو AI ایجنٹ کی ترقی میں عام چیلنجز کے لیے معیاری طریقے فراہم کرکے ان کی ایپلیکیشنز کے منفرد پہلوؤں پر توجہ مرکوز کرنے میں مدد دیتے ہیں۔ یہ AI سسٹمز کی تعمیر میں توسیع پذیری، رسائی، اور کارکردگی کو بڑھاتے ہیں۔
اس سبق میں شامل ہوگا:
اس سبق کے اہداف ہیں کہ آپ کو سمجھنے میں مدد ملے:
روایتی AI فریم ورک آپ کو AI کو اپنی ایپس میں ضم کرنے اور ان ایپس کو درج ذیل طریقوں سے بہتر بنانے میں مدد کر سکتے ہیں:
AI ایجنٹ فریم ورک صرف AI فریم ورک سے زیادہ کی نمائندگی کرتے ہیں۔ یہ ذہین ایجنٹس کی تخلیق کو فعال کرنے کے لیے ڈیزائن کیے گئے ہیں جو صارفین، دیگر ایجنٹس، اور ماحول کے ساتھ بات چیت کر سکتے ہیں تاکہ مخصوص اہداف حاصل کیے جا سکیں۔ یہ ایجنٹس خود مختار رویے کا مظاہرہ کر سکتے ہیں، فیصلے کر سکتے ہیں، اور بدلتے ہوئے حالات کے مطابق ڈھل سکتے ہیں۔ آئیے AI ایجنٹ فریم ورک کے ذریعے فعال کردہ کچھ کلیدی صلاحیتوں پر نظر ڈالیں:
خلاصہ یہ کہ ایجنٹس آپ کو زیادہ کرنے کی اجازت دیتے ہیں، خودکاریت کو اگلے درجے تک لے جانے، اور زیادہ ذہین سسٹمز بنانے کی جو اپنے ماحول سے سیکھ سکتے ہیں اور اس کے مطابق ڈھل سکتے ہیں۔
یہ ایک تیزی سے بدلتا ہوا منظرنامہ ہے، لیکن AI ایجنٹ فریم ورک میں کچھ چیزیں عام ہیں جو آپ کو جلدی پروٹوٹائپ اور تکرار کرنے میں مدد دے سکتی ہیں، جیسے ماڈیول اجزاء، تعاون کے ٹولز، اور حقیقی وقت میں سیکھنا۔ آئیے ان پر تفصیل سے بات کرتے ہیں:
Microsoft Semantic Kernel اور LangChain جیسے SDKs پہلے سے تیار کردہ اجزاء پیش کرتے ہیں جیسے AI کنیکٹرز، پرومپٹ ٹیمپلیٹس، اور میموری مینجمنٹ۔
ٹیمیں ان کا استعمال کیسے کر سکتی ہیں: ٹیمیں ان اجزاء کو جلدی سے جمع کر سکتی ہیں تاکہ بغیر کسی بنیاد سے شروع کیے ایک فعال پروٹوٹائپ بنایا جا سکے، جس سے تیزی سے تجربہ اور تکرار ممکن ہو۔
یہ عملی طور پر کیسے کام کرتا ہے: آپ ایک پہلے سے تیار کردہ پارسر کا استعمال کر سکتے ہیں تاکہ صارف کے ان پٹ سے معلومات نکالی جا سکیں، ایک میموری ماڈیول ڈیٹا کو ذخیرہ کرنے اور بازیافت کرنے کے لیے، اور ایک پرومپٹ جنریٹر صارفین کے ساتھ بات چیت کرنے کے لیے، یہ سب بغیر کسی بنیاد سے ان اجزاء کو بنانے کے۔
مثال کوڈ۔ آئیے دیکھتے ہیں کہ آپ Semantic Kernel Python اور .Net کے ساتھ ایک پہلے سے تیار کردہ AI کنیکٹر کا استعمال کیسے کر سکتے ہیں جو صارف کے ان پٹ کا جواب دینے کے لیے آٹو فنکشن کالنگ کا استعمال کرتا ہے:
# Semantic Kernel Python Example
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
# Define a ChatHistory object to hold the conversation's context
chat_history = ChatHistory()
chat_history.add_user_message("I'd like to go to New York on January 1, 2025")
# Define a sample plugin that contains the function to book travel
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}"
# Create the Kernel
kernel = Kernel()
# Add the sample plugin to the Kernel object
kernel.add_plugin(BookTravelPlugin(), plugin_name="book_travel")
# Define the Azure OpenAI AI Connector
chat_service = AzureChatCompletion(
deployment_name="YOUR_DEPLOYMENT_NAME",
api_key="YOUR_API_KEY",
endpoint="https://<your-resource>.azure.openai.com/",
)
# Define the request settings to configure the model with auto-function calling
request_settings = AzureChatPromptExecutionSettings(function_choice_behavior=FunctionChoiceBehavior.Auto())
async def main():
# Make the request to the model for the given chat history and request settings
# The Kernel contains the sample that the model will request to invoke
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}`")
# Example AI Model Response: `Your flight to New York on January 1, 2025, has been successfully booked. Safe travels! ✈️🗽`
# Add the model's response to our chat history context
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):
# creating agents, then create a round robin schedule where they can work together, in this case in order
# Data Retrieval Agent
# Data Analysis Agent
# Decision Making Agent
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."
)
# conversation ends when user says "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)
# Use asyncio.run(...) when running in a script.
await Console(stream)
پچھلے کوڈ میں آپ دیکھتے ہیں کہ آپ ایک کام کیسے بنا سکتے ہیں جس میں متعدد ایجنٹس ڈیٹا کا تجزیہ کرنے کے لیے مل کر کام کرتے ہیں۔ ہر ایجنٹ ایک مخصوص فنکشن انجام دیتا ہے، اور کام ایجنٹس کو ہم آہنگ کرکے مطلوبہ نتیجہ حاصل کرنے کے لیے انجام دیا جاتا ہے۔ مخصوص کرداروں کے ساتھ وقف شدہ ایجنٹس بنا کر، آپ کام کی کارکردگی اور کارکردگی کو بہتر بنا سکتے ہیں۔
جدید فریم ورک حقیقی وقت کے سیاق و سباق کی تفہیم اور موافقت کے لیے صلاحیتیں فراہم کرتے ہیں۔
ٹیمیں ان کا استعمال کیسے کر سکتی ہیں: ٹیمیں فیڈ بیک لوپس نافذ کر سکتی ہیں جہاں ایجنٹس تعاملات سے سیکھتے ہیں اور اپنے رویے کو متحرک طور پر ایڈجسٹ کرتے ہیں، جس سے صلاحیتوں کی مسلسل بہتری اور اصلاح ممکن ہوتی ہے۔
یہ عملی طور پر کیسے کام کرتا ہے: ایجنٹس صارف کے فیڈ بیک، ماحولیاتی ڈیٹا، اور کام کے نتائج کا تجزیہ کر سکتے ہیں تاکہ اپنے علم کے ذخیرے کو اپ ڈیٹ کریں، فیصلہ سازی کے الگورتھمز کو ایڈجسٹ کریں، اور وقت کے ساتھ کارکردگی کو بہتر بنائیں۔ یہ تکراری سیکھنے کا عمل ایجنٹس کو بدلتے ہوئے حالات اور صارف کی ترجیحات کے مطابق ڈھلنے کے قابل بناتا ہے، جس سے مجموعی سسٹم کی تاثیر میں اضافہ ہوتا ہے۔
ان فریم ورک کا موازنہ کرنے کے کئی طریقے ہیں، لیکن آئیے ان کے ڈیزائن، صلاحیتوں، اور ہدف استعمال کے معاملات کے لحاظ سے کچھ کلیدی فرق پر نظر ڈالیں:
AutoGen Microsoft Research کے AI Frontiers Lab کے ذریعے تیار کردہ ایک اوپن سورس فریم ورک ہے۔ یہ ایونٹ سے چلنے والے، تقسیم شدہ ایجنٹک ایپلیکیشنز پر مرکوز ہے، جو متعدد LLMs اور SLMs، ٹولز، اور جدید ملٹی ایجنٹ ڈیزائن پیٹرنز کو فعال کرتا ہے۔
AutoGen ایجنٹس کے بنیادی تصور کے ارد گرد بنایا گیا ہے، جو خود مختار ادارے ہیں جو اپنے ماحول کو محسوس کر سکتے ہیں، فیصلے کر سکتے ہیں، اور مخصوص اہداف حاصل کرنے کے لیے اقدامات کر سکتے ہیں۔ ایجنٹس غیر متزامن پیغامات کے ذریعے بات چیت کرتے ہیں، جس سے وہ آزادانہ اور متوازی طور پر کام کر سکتے ہیں، سسٹم کی توسیع پذیری اور ردعمل کو بڑھا سکتے ہیں۔
ایجنٹس اداکار ماڈل پر مبنی ہیں۔ ویکیپیڈیا کے مطابق، ایک اداکار ہم وقت ساز حساب کتاب کا بنیادی تعمیراتی بلاک ہے۔ اسے موصول ہونے والے پیغام کے جواب میں، ایک اداکار مقامی فیصلے کر سکتا ہے، مزید اداکار بنا سکتا ہے، مزید پیغامات بھیج سکتا ہے، اور موصول ہونے والے اگلے پیغام کا جواب دینے کا طریقہ طے کر سکتا ہے۔
استعمال کے معاملات: کوڈ جنریشن، ڈیٹا تجزیہ کے کاموں کو خودکار بنانا، اور منصوبہ بندی اور تحقیق کے افعال کے لیے حسب ضرورت ایجنٹس بنانا۔
یہاں AutoGen کے کچھ اہم بنیادی تصورات ہیں:
یہاں ایک مختصر کوڈ کا ٹکڑا ہے جس میں آپ چیٹ کی صلاحیتوں کے ساتھ اپنا ایجنٹ بناتے ہیں:
```python
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 کو اس ایجنٹ کی قسم کے بارے میں بتائیں اور پروگرام شروع کریں:
```python
# main.py
runtime = SingleThreadedAgentRuntime()
await MyAgent.register(runtime, "my_agent", lambda: MyAgent())
runtime.start() # Start processing messages in the background.
await runtime.send_message(MyMessageType("Hello, World!"), AgentId("my_agent", "default"))
```
پچھلے کوڈ میں ایجنٹس کو رن ٹائم کے ساتھ رجسٹر کیا گیا ہے اور پھر ایجنٹ کو ایک پیغام بھیجا گیا ہے جس کے نتیجے میں درج ذیل آؤٹ پٹ آتا ہے:
```text
# 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."
# Example of declaring an Agent
editor_agent_type = await EditorAgent.register(
runtime,
editor_topic_type, # Using topic type as the agent 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",
),
),
)
# remaining declarations shortened for brevity
# Group chat
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
ہے جو رن ٹائم کے ساتھ رجسٹرڈ ہے۔ یہ مینیجر مختلف قسم کے ایجنٹس، جیسے مصنفین، مصوروں، ایڈیٹرز، اور صارفین کے درمیان تعاملات کو ہم آہنگ کرنے کا ذمہ دار ہے۔
اسٹینڈ الون رن ٹائم۔ یہ سنگل پروسیس ایپلیکیشنز کے لیے ایک اچھا انتخاب ہے جہاں تمام ایجنٹس ایک ہی پروگرامنگ زبان میں نافذ کیے گئے ہیں اور ایک ہی پروسیس میں چلتے ہیں۔ یہاں ایک مثال ہے کہ یہ کیسے کام کرتا ہے:
اسٹینڈ الون رن ٹائم
ایپلیکیشن اسٹیک
ایجنٹس رن ٹائم کے ذریعے پیغامات کے ذریعے بات چیت کرتے ہیں، اور رن ٹائم ایجنٹس کی زندگی کے چکر کا انتظام کرتا ہے
تقسیم شدہ ایجنٹ رن ٹائم، ملٹی پروسیس ایپلیکیشنز کے لیے موزوں ہے جہاں ایجنٹس مختلف پروگرامنگ زبانوں میں نافذ کیے جا سکتے ہیں اور مختلف مشینوں پر چل رہے ہیں۔ یہاں ایک مثال ہے کہ یہ کیسے کام کرتا ہے:
Semantic Kernel ایک انٹرپرائز کے لیے تیار AI Orchestration SDK ہے۔ اس میں AI اور میموری کنیکٹرز کے ساتھ ایک ایجنٹ فریم ورک شامل ہے۔
آئیے پہلے کچھ بنیادی اجزاء کا احاطہ کریں:
SummarizedAzureDocs
میں محفوظ کیے جاتے ہیں۔ یہ ایک بہت سادہ مثال ہے، لیکن آپ دیکھ سکتے ہیں کہ کس طرح معلومات کو میموری میں محفوظ کیا جا سکتا ہے تاکہ LLM اسے استعمال کر سکے۔تو یہ تھا Semantic Kernel فریم ورک کا بنیادی تعارف، لیکن Agent Framework کے بارے میں کیا خیال ہے؟
Azure AI Agent Service ایک حالیہ اضافہ ہے، جو Microsoft Ignite 2024 میں متعارف کرایا گیا۔ یہ AI ایجنٹس کی ترقی اور تعیناتی کے لیے زیادہ لچکدار ماڈلز فراہم کرتا ہے، جیسے کہ براہ راست اوپن سورس LLMs جیسے Llama 3، Mistral، اور Cohere کو کال کرنا۔
Azure AI Agent Service مضبوط انٹرپرائز سیکیورٹی میکانزم اور ڈیٹا اسٹوریج کے طریقے فراہم کرتا ہے، جو اسے انٹرپرائز ایپلیکیشنز کے لیے موزوں بناتا ہے۔
یہ AutoGen اور Semantic Kernel جیسے ملٹی ایجنٹ آرکسٹریشن فریم ورکس کے ساتھ آؤٹ آف دی باکس کام کرتا ہے۔
یہ سروس فی الحال پبلک پریویو میں ہے اور ایجنٹس بنانے کے لیے 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
# Define a sample plugin for the sample
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,
):
# Create agent definition
agent_definition = await client.agents.create_agent(
model=ai_agent_settings.model_deployment_name,
name="Host",
instructions="Answer questions about the menu.",
)
# Create the AzureAI Agent using the defined client and agent definition
agent = AzureAIAgent(
client=client,
definition=agent_definition,
plugins=[MenuPlugin()],
)
# Create a thread to hold the conversation
# If no thread is provided, a new thread will be
# created and returned with the initial response
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}'")
# Invoke the agent for the specified thread
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 کے درج ذیل بنیادی تصورات ہیں:
ایجنٹ۔ Azure AI Agent Service Azure AI Foundry کے ساتھ انٹیگریٹ کرتا ہے۔ AI Foundry کے اندر، ایک AI ایجنٹ ایک “سمارٹ” مائیکرو سروس کے طور پر کام کرتا ہے جو سوالات کے جواب دینے (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 = 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
کو کال کرکے، ایجنٹ سے تھریڈ پر کام کرنے کو کہا جاتا ہے۔ آخر میں، پیغامات کو ایجنٹ کے جواب کو دیکھنے کے لیے لاگ کیا جاتا ہے۔ پیغامات صارف اور ایجنٹ کے درمیان گفتگو کی پیش رفت کی نشاندہی کرتے ہیں۔ یہ بھی سمجھنا ضروری ہے کہ پیغامات مختلف اقسام کے ہو سکتے ہیں جیسے کہ متن، تصویر، یا فائل، جو ایجنٹ کے کام کے نتیجے میں پیدا ہوئے ہیں، مثال کے طور پر ایک تصویر یا متن کا جواب۔ ایک ڈویلپر کے طور پر، آپ پھر اس معلومات کو مزید جواب کو پروسیس کرنے یا صارف کو پیش کرنے کے لیے استعمال کر سکتے ہیں۔
دیگر AI فریم ورکس کے ساتھ انٹیگریشن۔ Azure AI Agent Service دیگر فریم ورکس جیسے AutoGen اور Semantic Kernel کے ساتھ تعامل کر سکتا ہے، جس کا مطلب ہے کہ آپ اپنی ایپ کا کچھ حصہ ان فریم ورکس میں بنا سکتے ہیں اور مثال کے طور پر ایجنٹ سروس کو آرکسٹریٹر کے طور پر استعمال کر سکتے ہیں یا آپ سب کچھ ایجنٹ سروس میں بنا سکتے ہیں۔
استعمال کے کیسز: Azure AI Agent Service انٹرپرائز ایپلیکیشنز کے لیے ڈیزائن کیا گیا ہے جو محفوظ، قابل توسیع، اور لچکدار AI ایجنٹ تعیناتی کی ضرورت رکھتے ہیں۔
یہ سننے میں آتا ہے کہ ان فریم ورکس میں کافی حد تک اوورلیپ ہے، لیکن ان کے ڈیزائن، صلاحیتوں، اور ہدف استعمال کے کیسز کے لحاظ سے کچھ اہم فرق ہیں:
اب بھی یقین نہیں کہ کون سا منتخب کریں؟
آئیے کچھ عام استعمال کے کیسز کے ذریعے آپ کی مدد کرنے کی کوشش کرتے ہیں:
سوال: میں تجربہ کر رہا ہوں، سیکھ رہا ہوں اور پروف آف کانسیپٹ ایجنٹ ایپلیکیشنز بنا رہا ہوں، اور میں جلدی سے تعمیر اور تجربہ کرنا چاہتا ہوں۔
جواب: AutoGen اس منظر نامے کے لیے ایک اچھا انتخاب ہوگا، کیونکہ یہ ایونٹ ڈرائیون، ڈسٹریبیوٹڈ ایجنٹک ایپلیکیشنز پر توجہ مرکوز کرتا ہے اور جدید ملٹی ایجنٹ ڈیزائن پیٹرنز کو سپورٹ کرتا ہے۔
سوال: AutoGen کو Semantic Kernel اور Azure AI Agent Service کے مقابلے میں اس استعمال کے کیس کے لیے بہتر انتخاب کیا بناتا ہے؟
جواب: AutoGen خاص طور پر ایونٹ ڈرائیون، ڈسٹریبیوٹڈ ایجنٹک ایپلیکیشنز کے لیے ڈیزائن کیا گیا ہے، جو اسے کوڈ جنریشن اور ڈیٹا اینالیسس کے کاموں کو خودکار بنانے کے لیے موزوں بناتا ہے۔ یہ پیچیدہ ملٹی ایجنٹ سسٹمز کو مؤثر طریقے سے بنانے کے لیے ضروری ٹولز اور صلاحیتیں فراہم کرتا ہے۔
سوال: لگتا ہے کہ Azure AI Agent Service یہاں بھی کام کر سکتا ہے، اس میں کوڈ جنریشن اور مزید کے لیے ٹولز ہیں؟
جواب: جی ہاں، Azure AI Agent Service ایجنٹس کے لیے ایک پلیٹ فارم سروس ہے اور متعدد ماڈلز، Azure AI Search، Bing Search اور Azure Functions کے لیے بلٹ ان صلاحیتیں شامل کرتا ہے۔ یہ Foundry Portal میں آپ کے ایجنٹس کو آسانی سے بنانے اور بڑے پیمانے پر تعینات کرنے کی سہولت فراہم کرتا ہے۔
سوال: میں اب بھی الجھن میں ہوں، بس مجھے ایک آپشن دے دیں۔
جواب: ایک بہترین انتخاب یہ ہے کہ اپنی ایپلیکیشن Semantic Kernel میں بنائیں اور پھر Azure AI Agent Service کا استعمال کرتے ہوئے اپنے ایجنٹ کو تعینات کریں۔ یہ طریقہ آپ کو اپنے ایجنٹس کو آسانی سے برقرار رکھنے کی اجازت دیتا ہے جبکہ Semantic Kernel میں ملٹی ایجنٹ سسٹمز بنانے کی طاقت کا فائدہ اٹھاتا ہے۔ اس کے علاوہ، Semantic Kernel میں AutoGen کے لیے ایک کنیکٹر موجود ہے، جو دونوں فریم ورکس کو ایک ساتھ استعمال کرنا آسان بناتا ہے۔
آئیے ایک جدول میں کلیدی فرق کا خلاصہ کریں:
فریم ورک | فوکس | بنیادی تصورات | استعمال کے کیسز |
---|---|---|---|
AutoGen | ایونٹ ڈرائیون، ڈسٹریبیوٹڈ ایجنٹک ایپلیکیشنز | ایجنٹس، پرسوناز، فنکشنز، ڈیٹا | کوڈ جنریشن، ڈیٹا اینالیسس کے کام |
Semantic Kernel | انسانی جیسا متن سمجھنا اور پیدا کرنا | ایجنٹس، ماڈیولر کمپوننٹس، تعاون | قدرتی زبان کی سمجھ، مواد کی تخلیق |
Azure AI Agent Service | لچکدار ماڈلز، انٹرپرائز سیکیورٹی، کوڈ جنریشن، ٹول کالنگ | ماڈیولریٹی، تعاون، پروسیس آرکسٹریشن | محفوظ، قابل توسیع، اور لچکدار AI ایجنٹ تعیناتی |
ہر ایک فریم ورک کے لیے مثالی استعمال کا کیس کیا ہے؟
جواب ہاں میں ہے، آپ اپنے موجودہ Azure ایکو سسٹم ٹولز کو خاص طور پر Azure AI Agent Service کے ساتھ براہ راست انٹیگریٹ کر سکتے ہیں، کیونکہ یہ دیگر Azure خدمات کے ساتھ بغیر کسی رکاوٹ کے کام کرنے کے لیے بنایا گیا ہے۔ آپ مثال کے طور پر Bing، Azure AI Search، اور Azure Functions کو انٹیگریٹ کر سکتے ہیں۔ Azure AI Foundry کے ساتھ بھی گہری انٹیگریشن موجود ہے۔
AutoGen اور Semantic Kernel کے لیے، آپ Azure خدمات کے ساتھ بھی انٹیگریٹ کر سکتے ہیں، لیکن اس کے لیے آپ کو اپنے کوڈ سے Azure خدمات کو کال کرنے کی ضرورت ہو سکتی ہے۔ انٹیگریٹ کرنے کا ایک اور طریقہ یہ ہے کہ Azure SDKs کا استعمال کرتے ہوئے اپنے ایجنٹس سے Azure خدمات کے ساتھ تعامل کریں۔ اس کے علاوہ، جیسا کہ ذکر کیا گیا، آپ Azure AI Agent Service کو AutoGen یا Semantic Kernel میں بنائے گئے ایجنٹس کے لیے آرکسٹریٹر کے طور پر استعمال کر سکتے ہیں، جو Azure ایکو سسٹم تک آسان رسائی فراہم کرے گا۔
Azure AI Foundry Discord میں شامل ہوں تاکہ دیگر سیکھنے والوں سے ملاقات کریں، آفس آورز میں شرکت کریں اور اپنے AI ایجنٹس کے سوالات کے جوابات حاصل کریں۔
AI ایجنٹس اور ایجنٹ استعمال کے کیسز کا تعارف
ایجنٹک ڈیزائن پیٹرنز کو سمجھنا
ڈسکلیمر:
یہ دستاویز AI ترجمہ سروس Co-op Translator کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔