(Bofya picha hapo juu ili kutazama video ya somo hili)
Mifumo ya Mawakala wa AI ni majukwaa ya programu yaliyoundwa ili kurahisisha uundaji, usambazaji, na usimamizi wa mawakala wa AI. Mifumo hii huwapa watengenezaji vipengele vilivyotengenezwa tayari, dhana za juu, na zana zinazorahisisha maendeleo ya mifumo changamano ya AI.
Mifumo hii husaidia watengenezaji kuzingatia vipengele vya kipekee vya programu zao kwa kutoa mbinu zilizo sanifu kwa changamoto za kawaida katika maendeleo ya mawakala wa AI. Zinaboresha uwezo wa kupanuka, upatikanaji, na ufanisi katika ujenzi wa mifumo ya AI.
Somo hili litashughulikia:
Malengo ya somo hili ni kukusaidia kuelewa:
Mifumo ya jadi ya AI inaweza kusaidia kuunganisha AI katika programu zako na kuzifanya programu hizi kuwa bora kwa njia zifuatazo:
Mifumo ya Mawakala wa AI inawakilisha kitu zaidi ya mifumo ya AI ya jadi. Imeundwa kuwezesha uundaji wa mawakala wenye akili wanaoweza kuingiliana na watumiaji, mawakala wengine, na mazingira ili kufanikisha malengo maalum. Mawakala hawa wanaweza kuonyesha tabia ya kujitegemea, kufanya maamuzi, na kuzoea hali zinazobadilika. Hebu tuangalie uwezo muhimu unaowezeshwa na Mifumo ya Mawakala wa AI:
Kwa muhtasari, mawakala wanakuwezesha kufanya zaidi, kuchukua uendeshaji hadi kiwango cha juu, na kuunda mifumo yenye akili zaidi inayoweza kuzoea na kujifunza kutoka kwa mazingira yao.
Hili ni eneo linalobadilika haraka, lakini kuna mambo fulani ya kawaida katika Mifumo mingi ya Mawakala wa AI ambayo yanaweza kukusaidia kuunda haraka na kurudia, yaani vipengele vya moduli, zana za ushirikiano, na kujifunza kwa wakati halisi. Hebu tuingie ndani ya haya:
SDK kama Microsoft Semantic Kernel na LangChain hutoa vipengele vilivyotengenezwa tayari kama viunganishi vya AI, templeti za maelekezo, na usimamizi wa kumbukumbu.
Jinsi timu zinaweza kutumia hizi: Timu zinaweza kuunganisha vipengele hivi haraka ili kuunda mfano wa kazi bila kuanza kutoka mwanzo, hivyo kuruhusu majaribio ya haraka na kurudia.
Jinsi inavyofanya kazi kwa vitendo: Unaweza kutumia parser iliyotengenezwa tayari ili kutoa taarifa kutoka kwa pembejeo ya mtumiaji, moduli ya kumbukumbu kuhifadhi na kupata data, na jenereta ya maelekezo kuingiliana na watumiaji, yote bila kujenga vipengele hivi kutoka mwanzo.
Mfano wa msimbo. Hebu tuangalie mifano ya jinsi unavyoweza kutumia Kiunganishi cha AI kilichotengenezwa tayari na Semantic Kernel Python na .Net kinachotumia kupiga kazi kiotomatiki ili kuwa na modeli inayojibu pembejeo ya mtumiaji:
# 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}");
}
}
Unachoweza kuona kutoka kwa mfano huu ni jinsi unavyoweza kutumia parser iliyotengenezwa tayari kutoa taarifa muhimu kutoka kwa pembejeo ya mtumiaji, kama asili, marudio, na tarehe ya ombi la uhifadhi wa ndege. Mbinu hii ya moduli inakuwezesha kuzingatia mantiki ya kiwango cha juu.
Mifumo kama CrewAI, Microsoft AutoGen, na Semantic Kernel hufanikisha uundaji wa mawakala wengi wanaoweza kufanya kazi pamoja.
Jinsi timu zinaweza kutumia hizi: Timu zinaweza kuunda mawakala wenye majukumu na kazi maalum, hivyo kuwawezesha kujaribu na kuboresha mtiririko wa kazi wa ushirikiano na kuboresha ufanisi wa mfumo kwa ujumla.
Jinsi inavyofanya kazi kwa vitendo: Unaweza kuunda timu ya mawakala ambapo kila wakala ana kazi maalum, kama kupata data, uchambuzi, au kufanya maamuzi. Mawakala hawa wanaweza kuwasiliana na kushiriki taarifa ili kufanikisha lengo la pamoja, kama kujibu swali la mtumiaji au kukamilisha kazi.
Mfano wa msimbo (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)
Unachokiona katika msimbo uliopita ni jinsi unavyoweza kuunda kazi inayohusisha mawakala wengi wanaofanya kazi pamoja kuchambua data. Kila wakala hufanya kazi maalum, na kazi inatekelezwa kwa kuratibu mawakala ili kufanikisha matokeo yanayotarajiwa. Kwa kuunda mawakala maalum wenye majukumu maalum, unaweza kuboresha ufanisi wa kazi na utendaji.
Mifumo ya hali ya juu hutoa uwezo wa kuelewa muktadha na kuzoea kwa wakati halisi.
Jinsi timu zinaweza kutumia hizi: Timu zinaweza kutekeleza mizunguko ya maoni ambapo mawakala hujifunza kutoka kwa mwingiliano na kurekebisha tabia zao kwa nguvu, hivyo kusababisha uboreshaji wa kuendelea na uboreshaji wa uwezo.
Jinsi inavyofanya kazi kwa vitendo: Mawakala wanaweza kuchambua maoni ya mtumiaji, data ya mazingira, na matokeo ya kazi ili kusasisha hifadhidata yao ya maarifa, kurekebisha algorithmu za kufanya maamuzi, na kuboresha utendaji kwa muda. Mchakato huu wa kujifunza kwa kurudia unawawezesha mawakala kuzoea hali zinazobadilika na mapendeleo ya mtumiaji, hivyo kuboresha ufanisi wa mfumo kwa ujumla.
Kuna njia nyingi za kulinganisha mifumo hii, lakini hebu tuangalie tofauti muhimu kwa mujibu wa muundo wao, uwezo, na matumizi yanayolengwa:
AutoGen ni mfumo wa chanzo huria ulioendelezwa na Maabara ya AI Frontiers ya Microsoft Research. Unalenga programu za mawakala wa kugawanyika zinazotegemea matukio, na kuwezesha LLMs na SLMs nyingi, zana, na mifumo ya hali ya juu ya muundo wa mawakala wengi.
AutoGen umejengwa kuzunguka dhana ya msingi ya mawakala, ambao ni vyombo vya kujitegemea vinavyoweza kutambua mazingira yao, kufanya maamuzi, na kuchukua hatua kufanikisha malengo maalum. Mawakala huwasiliana kupitia ujumbe usio wa moja kwa moja, hivyo kuwawezesha kufanya kazi kwa kujitegemea na kwa sambamba, hivyo kuboresha uwezo wa kupanuka na kujibu wa mfumo.
Kulingana na Wikipedia, mwigizaji ni kizuizi cha msingi cha hesabu ya sambamba. Kwa kujibu ujumbe unaopokea, mwigizaji anaweza: kufanya maamuzi ya ndani, kuunda waigizaji zaidi, kutuma ujumbe zaidi, na kuamua jinsi ya kujibu ujumbe unaofuata unaopokelewa.
Matumizi: Kuendesha kizazi cha msimbo, kazi za uchambuzi wa data, na kujenga mawakala maalum kwa kazi za kupanga na utafiti.
Hapa kuna dhana muhimu za msingi za AutoGen:
Hapa kuna kipande kifupi cha msimbo ambacho unaunda wakala wako mwenyewe wenye uwezo wa mazungumzo:
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.messages import TextMessage
from autogen_ext.models.openai import OpenAIChatCompletionClient
class MyAssistant(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}")
Katika msimbo uliopita, MyAssistant
imeundwa na kurithi kutoka kwa RoutedAgent
. Ina mshughulikiaji wa ujumbe ambao huchapisha maudhui ya ujumbe na kisha kutuma jibu kwa kutumia wakala wa AssistantAgent
. Kumbuka hasa jinsi tunavyoweka kwa self._delegate
mfano wa AssistantAgent
ambao ni wakala uliotengenezwa tayari unaoweza kushughulikia mazungumzo.
Hebu tuufahamishe AutoGen kuhusu aina hii ya wakala na kuanzisha programu:
# 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"))
Katika msimbo uliopita mawakala wamesajiliwa na mazingira ya runtime na kisha ujumbe umetumwa kwa wakala, na kusababisha matokeo yafuatayo:
# 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?
Mawakala Wengi. AutoGen inaunga mkono uundaji wa mawakala wengi wanaoweza kufanya kazi pamoja kufanikisha kazi changamano. Mawakala wanaweza kuwasiliana, kushiriki taarifa, na kuratibu vitendo vyao kutatua matatizo kwa ufanisi zaidi. Ili kuunda mfumo wa mawakala wengi, unaweza kufafanua aina tofauti za mawakala wenye kazi na majukumu maalum, kama kupata data, uchambuzi, kufanya maamuzi, na mwingiliano wa mtumiaji. Hebu tuone jinsi uundaji kama huo unavyoonekana ili tupate hisia ya hilo:
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
],
),
)
Katika msimbo uliopita tuna GroupChatManager
ambayo imesajiliwa na mazingira ya runtime. Meneja huyu anahusika na kuratibu mwingiliano kati ya aina tofauti za mawakala, kama waandishi, wachoraji, wahariri, na watumiaji.
Mazingira ya runtime ya pekee. Hili ni chaguo nzuri kwa programu za mchakato mmoja ambapo mawakala wote wanatekelezwa kwa lugha moja ya programu na kuendeshwa katika mchakato mmoja. Hapa kuna mfano wa jinsi inavyofanya kazi:
Stack ya programu
mawakala huwasiliana kupitia ujumbe kupitia mazingira ya runtime, na mazingira ya runtime husimamia mzunguko wa maisha ya mawakala
Mazingira ya runtime ya mawakala wa kugawanyika, yanafaa kwa programu za mchakato mwingi ambapo mawakala wanaweza kutekelezwa kwa lugha tofauti za programu na kuendeshwa kwenye mashine tofauti. Hapa kuna mfano wa jinsi inavyofanya kazi:
Semantic Kernel ni SDK ya Orchestration ya AI inayofaa kwa biashara. Inajumuisha viunganishi vya AI na kumbukumbu, pamoja na Mfumo wa Mawakala.
Hebu kwanza tuangalie vipengele vya msingi:
Viunganishi vya AI: Hii ni kiunganishi na huduma za nje za AI na vyanzo vya data kwa matumizi katika Python na C#.
# Semantic Kernel Python
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();
Hapa kuna mfano rahisi wa jinsi unavyoweza kuunda kernel na kuongeza huduma ya mazungumzo ya kukamilisha. Semantic Kernel huunda muunganisho na huduma ya nje ya AI, katika kesi hii, Azure OpenAI Chat Completion.
Plugins: Hizi hufungasha kazi ambazo programu inaweza kutumia. Kuna plugins zilizotengenezwa tayari na za kawaida unazoweza kuunda. Dhana inayohusiana ni “kazi za maelekezo.” Badala ya kutoa vidokezo vya lugha asilia kwa miito ya kazi, unatangaza kazi fulani kwa modeli. Kulingana na muktadha wa mazungumzo ya sasa, modeli inaweza kuchagua kuita moja ya kazi hizi kukamilisha ombi au swali. Hapa kuna mfano:
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]);
Hapa, kwanza una templeti ya maelekezo skPrompt
inayotoa nafasi kwa mtumiaji kuingiza maandishi, $userInput
. Kisha unaunda kazi ya kernel SummarizeText
na kisha kuiingiza kwenye kernel na jina la plugin SemanticFunctions
. Kumbuka jina la kazi ambalo husaidia Semantic Kernel kuelewa kazi hiyo inafanya nini na wakati inapaswa kuitwa.
Kazi Asilia: Pia kuna kazi asilia ambazo mfumo unaweza kuita moja kwa moja kutekeleza kazi. Hapa kuna mfano wa kazi kama hiyo inayopata maudhui kutoka kwa faili:
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>();
Kumbukumbu: Inarahisisha usimamizi wa muktadha kwa programu za AI. Wazo la kumbukumbu ni kwamba hili ni jambo ambalo LLM inapaswa kujua. Unaweza kuhifadhi taarifa hii katika hifadhi ya vector ambayo huishia kuwa hifadhidata ya kumbukumbu au hifadhidata ya vector au sawa. Hapa kuna mfano wa hali rahisi sana ambapo maelezo yanaongezwa kwenye kumbukumbu:
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"
);
}
Maelezo haya kisha huhifadhiwa katika mkusanyiko wa kumbukumbu SummarizedAzureDocs
. Huu ni mfano rahisi sana,
Hivyo ndivyo misingi ya mfumo wa Semantic Kernel, vipi kuhusu Mfumo wa Wakala (Agent Framework)?
Huduma ya Azure AI Agent ni nyongeza mpya zaidi, iliyoanzishwa katika Microsoft Ignite 2024. Inaruhusu maendeleo na usambazaji wa mawakala wa AI kwa kutumia mifano yenye kubadilika zaidi, kama vile kupiga simu moja kwa moja kwa LLMs za chanzo huria kama Llama 3, Mistral, na Cohere.
Huduma ya Azure AI Agent inatoa mifumo imara ya usalama wa biashara na mbinu za kuhifadhi data, na kuifanya iwe bora kwa matumizi ya biashara.
Inafanya kazi moja kwa moja na mifumo ya upangaji wa mawakala wengi kama AutoGen na Semantic Kernel.
Huduma hii kwa sasa ipo katika Kipindi cha Awali cha Umma (Public Preview) na inasaidia Python na C# kwa ajili ya kujenga mawakala.
Kwa kutumia Semantic Kernel Python, tunaweza kuunda Wakala wa Azure AI kwa kutumia programu-jalizi iliyobainishwa na mtumiaji:
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())
Huduma ya Azure AI Agent ina misingi ifuatayo:
Wakala (Agent). Huduma ya Azure AI Agent inaunganishwa na Azure AI Foundry. Ndani ya AI Foundry, Wakala wa AI hufanya kazi kama huduma ndogo “ya akili” inayoweza kutumika kujibu maswali (RAG), kutekeleza vitendo, au kuendesha kazi kiotomatiki. Inafanikisha hili kwa kuchanganya nguvu za mifano ya AI ya kizazi na zana zinazoiwezesha kufikia na kuingiliana na vyanzo vya data vya ulimwengu halisi. Hapa kuna mfano wa wakala:
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,
)
Katika mfano huu, wakala ameundwa kwa kutumia mfano gpt-4o-mini
, jina my-agent
, na maagizo You are helpful agent
. Wakala amepewa zana na rasilimali za kutekeleza kazi za kutafsiri msimbo.
Mada na ujumbe (Thread and messages). Mada ni dhana nyingine muhimu. Inawakilisha mazungumzo au mwingiliano kati ya wakala na mtumiaji. Mada zinaweza kutumika kufuatilia maendeleo ya mazungumzo, kuhifadhi taarifa za muktadha, na kudhibiti hali ya mwingiliano. Hapa kuna mfano wa mada:
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}")
Katika msimbo uliopita, mada imeundwa. Baadaye, ujumbe umetumwa kwenye mada. Kwa kupiga create_and_process_run
, wakala ameombwa kufanya kazi kwenye mada. Hatimaye, ujumbe unapatikana na kurekodiwa ili kuona majibu ya wakala. Ujumbe unaonyesha maendeleo ya mazungumzo kati ya mtumiaji na wakala. Pia ni muhimu kuelewa kwamba ujumbe unaweza kuwa wa aina tofauti kama vile maandishi, picha, au faili, ambapo kazi ya wakala imesababisha, kwa mfano, picha au jibu la maandishi. Kama msanidi programu, unaweza kutumia taarifa hii kuchakata zaidi jibu au kulionyesha kwa mtumiaji.
Inaunganishwa na mifumo mingine ya AI. Huduma ya Azure AI Agent inaweza kuingiliana na mifumo mingine kama AutoGen na Semantic Kernel, ambayo inamaanisha unaweza kujenga sehemu ya programu yako katika moja ya mifumo hii na, kwa mfano, kutumia huduma ya Wakala kama mpangaji au unaweza kujenga kila kitu katika huduma ya Wakala.
Matumizi: Huduma ya Azure AI Agent imeundwa kwa ajili ya programu za biashara zinazohitaji usambazaji wa mawakala wa AI wenye usalama, uwezo wa kupanuka, na kubadilika.
Inaonekana kuna mwingiliano mwingi kati ya mifumo hii, lakini kuna tofauti muhimu katika muundo wao, uwezo, na matumizi yanayolengwa:
Bado hujui ni ipi ya kuchagua?
Hebu tuone kama tunaweza kukusaidia kwa kupitia baadhi ya matumizi ya kawaida:
Swali: Ninajaribu, kujifunza, na kujenga programu za wakala za uthibitisho wa dhana, na ninataka kuwa na uwezo wa kujenga na kujaribu haraka
Jibu: AutoGen itakuwa chaguo zuri kwa hali hii, kwani inazingatia programu za wakala zinazotegemea matukio na inasaidia miundo ya hali ya juu ya mawakala wengi.
Swali: Ni nini kinachofanya AutoGen kuwa chaguo bora kuliko Semantic Kernel na Huduma ya Azure AI Agent kwa matumizi haya?
Jibu: AutoGen imeundwa mahsusi kwa programu za wakala zinazotegemea matukio, na kuifanya iwe bora kwa kazi za kiotomatiki za kizazi cha msimbo na uchambuzi wa data. Inatoa zana na uwezo unaohitajika kujenga mifumo changamano ya mawakala wengi kwa ufanisi.
Swali: Inaonekana kama Huduma ya Azure AI Agent inaweza kufanya kazi hapa pia, ina zana za kizazi cha msimbo na zaidi?
Jibu: Ndiyo, Huduma ya Azure AI Agent ni huduma ya jukwaa kwa mawakala na inaongeza uwezo wa kujengwa kwa mifano mingi, Azure AI Search, Bing Search, na Azure Functions. Inafanya iwe rahisi kujenga mawakala wako katika Foundry Portal na kuwasambaza kwa kiwango kikubwa.
Swali: Bado sijaelewa, nipe chaguo moja tu
Jibu: Chaguo bora ni kujenga programu yako katika Semantic Kernel kwanza na kisha kutumia Huduma ya Azure AI Agent kusambaza wakala wako. Njia hii inakuwezesha kuhifadhi mawakala wako kwa urahisi huku ukitumia nguvu ya kujenga mifumo ya mawakala wengi katika Semantic Kernel. Zaidi ya hayo, Semantic Kernel ina kiunganishi katika AutoGen, na kuifanya iwe rahisi kutumia mifumo yote miwili pamoja.
Hebu tufupishe tofauti kuu katika jedwali:
Mfumo | Lengo | Misingi Muhimu | Matumizi |
---|---|---|---|
AutoGen | Programu za wakala zinazotegemea matukio, zenye usambazaji | Mawakala, Personas, Kazi, Data | Kizazi cha msimbo, kazi za uchambuzi wa data |
Semantic Kernel | Kuelewa na kuzalisha maudhui ya maandishi yanayofanana na ya binadamu | Mawakala, Vipengele vya Moduli, Ushirikiano | Uelewa wa lugha ya asili, kizazi cha maudhui |
Huduma ya Azure AI Agent | Mifano inayobadilika, usalama wa biashara, Kizazi cha msimbo, Kupiga simu kwa Zana | Moduli, Ushirikiano, Upangaji wa Mchakato | Usambazaji wa mawakala wa AI wenye usalama, uwezo wa kupanuka, na kubadilika |
Je, ni matumizi gani bora kwa kila moja ya mifumo hii?
Jibu ni ndiyo, unaweza kuunganisha zana zako zilizopo za mfumo wa Azure moja kwa moja na Huduma ya Azure AI Agent hasa, kwa sababu imejengwa kufanya kazi kwa urahisi na huduma nyingine za Azure. Kwa mfano, unaweza kuunganisha Bing, Azure AI Search, na Azure Functions. Pia kuna muunganisho wa kina na Azure AI Foundry.
Kwa AutoGen na Semantic Kernel, unaweza pia kuunganisha na huduma za Azure, lakini inaweza kuhitaji wewe kupiga huduma za Azure kutoka kwa msimbo wako. Njia nyingine ya kuunganisha ni kutumia SDK za Azure kuingiliana na huduma za Azure kutoka kwa mawakala wako. Zaidi ya hayo, kama ilivyotajwa, unaweza kutumia Huduma ya Azure AI Agent kama mpangaji wa mawakala wako waliotengenezwa katika AutoGen au Semantic Kernel ambayo ingetoa ufikiaji rahisi kwa mfumo wa Azure.
Jiunge na Azure AI Foundry Discord kukutana na wanafunzi wengine, kuhudhuria saa za ofisi, na kupata majibu ya maswali yako kuhusu Mawakala wa AI.
Utangulizi wa Mawakala wa AI na Matumizi Yake
Kanusho:
Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI Co-op Translator. Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii.