Anlam Çekirdeği AzureAIAgent
Keşfetmek
Önemli
Bu özellik deneysel aşamadadır. Bu aşamadaki özellikler hala geliştirme aşamasındadır ve önizleme veya sürüm adayı aşamasına geçmeden önce değiştirilebilir.
Bu tartışmayla ilgili ayrıntılı API belgelerine şu adreste ulaşabilirsiniz:
Güncelleştirilmiş AnlamSal Çekirdek Python API Belgeleri yakında kullanıma sunulacaktır.
Ajanlar şu anda Java'da kullanılamıyor.
AzureAIAgent
nedir?
AzureAIAgent
, sorunsuz araç tümleştirmesi ile gelişmiş konuşma özellikleri sağlamak için tasarlanmış, Semantik Çekirdek çerçevesi dahilinde özel bir ajandır. Araç çağrısını otomatikleştirerek el ile ayrıştırma ve çağırma gereksinimini ortadan kaldırır. Aracı ayrıca iş parçacıklarını kullanarak konuşma geçmişini güvenli bir şekilde yöneterek durumu koruma yükünü azaltır. Ayrıca AzureAIAgent
, Bing, Azure AI Search, Azure İşlevleri ve OpenAPI aracılığıyla dosya alma, kod yürütme ve veri etkileşimi gibi çeşitli yerleşik araçları destekler.
AzureAIAgent
kullanmak için Azure AI Foundry Projesi kullanılmalıdır. Aşağıdaki makaleler Azure AI Foundry'ye, proje oluşturma ve yapılandırmaya ve aracı hizmetine genel bir bakış sağlar:
- Azure AI Foundry nedir?
- Azure AI Foundry SDK'sını
- Azure AI Agent Service nedir?
- Hızlı Başlangıç: Yeni aracı oluşturma
Geliştirme Ortamınızı Hazırlama
AzureAIAgent
geliştirmeye devam etmek için geliştirme ortamınızı uygun paketlerle yapılandırın.
projenize Microsoft.SemanticKernel.Agents.AzureAI
paketini ekleyin:
dotnet add package Microsoft.SemanticKernel.Agents.AzureAI --prerelease
ayrıca Azure.Identity
paketini de dahil etmek isteyebilirsiniz:
dotnet add package Azure.Identity
İsteğe bağlı Azure bağımlılıklarıyla semantic-kernel
paketini yükleyin:
pip install semantic-kernel[azure]
Etmenler şu anda Java'da kullanılamıyor.
AI Proje İstemcisini Yapılandırma
Bir AzureAIAgent
'ye erişmek için öncelikle belirli bir Foundry Projesi için yapılandırılmış bir proje istemcisi oluşturulması gerekir, genellikle bir bağlantı dizesi sağlayarak (Azure AI Foundry SDK'sı: Projelere Başlarken).
AIProjectClient client = AzureAIAgent.CreateAzureAIClient("<your connection-string>", new AzureCliCredential());
AgentsClient
, AIProjectClient
'den erişilebilir.
AgentsClient agentsClient = client.GetAgentsClient();
Kök dizindeki .env
dosyasını değiştirip şunları ekleyin:
AZURE_AI_AGENT_PROJECT_CONNECTION_STRING = "<example-connection-string>"
AZURE_AI_AGENT_MODEL_DEPLOYMENT_NAME = "<example-model-deployment-name>"
veya
AZURE_AI_AGENT_ENDPOINT = "<example-endpoint>"
AZURE_AI_AGENT_SUBSCRIPTION_ID = "<example-subscription-id>"
AZURE_AI_AGENT_RESOURCE_GROUP_NAME = "<example-resource-group-name>"
AZURE_AI_AGENT_PROJECT_NAME = "<example-project-name>"
AZURE_AI_AGENT_MODEL_DEPLOYMENT_NAME = "<example-model-deployment-name>"
Yapılandırma tanımlandıktan sonra istemci oluşturulabilir:
async with (
DefaultAzureCredential() as creds,
AzureAIAgent.create_client(credential=creds) as client,
):
# Your operational code here
Ajanlar şu anda Java'da kullanılamıyor.
AzureAIAgent
oluşturma
AzureAIAgent
oluşturmak için, Azure AI hizmeti aracılığıyla aracı projesini yapılandırıp başlatarak işe başlarsınız ve ardından Semantik Çekirdek ile tümleştirirsiniz:
AIProjectClient client = AzureAIAgent.CreateAzureAIClient("<your connection-string>", new AzureCliCredential());
AgentsClient agentsClient = client.GetAgentsClient();
// 1. Define an agent on the Azure AI agent service
Agent definition = agentsClient.CreateAgentAsync(
"<name of the the model used by the agent>",
name: "<agent name>",
description: "<agent description>",
instructions: "<agent instructions>");
// 2. Create a Semantic Kernel agent based on the agent definition
AzureAIAgent agent = new(definition, agentsClient);
from azure.identity.aio import DefaultAzureCredential
from semantic_kernel.agents.azure_ai import AzureAIAgent, AzureAIAgentSettings
ai_agent_settings = AzureAIAgentSettings.create()
async with (
DefaultAzureCredential() as creds,
AzureAIAgent.create_client(credential=creds) as client,
):
# 1. Define an agent on the Azure AI agent service
agent_definition = await client.agents.create_agent(
model=ai_agent_settings.model_deployment_name,
name="<name>",
instructions="<instructions>",
)
# 2. Create a Semantic Kernel agent based on the agent definition
agent = AzureAIAgent(
client=client,
definition=agent_definition,
)
Ajanlar şu anda Java'da kullanılamıyor.
AzureAIAgent
ile etkileşim kurmak
AzureAIAgent
ile etkileşim basittir. Ajan, konuşma geçmişini bir konu kullanarak otomatik olarak korur.
AgentThread thread = await agentsClient.CreateThreadAsync();
try
{
ChatMessageContent message = new(AuthorRole.User, "<your user input>");
await agent.AddChatMessageAsync(threadId, message);
await foreach (ChatMessageContent response in agent.InvokeAsync(thread.Id))
{
Console.WriteLine(response.Content);
}
}
finally
{
await this.AgentsClient.DeleteThreadAsync(thread.Id);
await this.AgentsClient.DeleteAgentAsync(agent.Id);
}
USER_INPUTS = ["Hello", "What's your name?"]
thread = await client.agents.create_thread()
try:
for user_input in USER_INPUTS:
await agent.add_chat_message(thread_id=thread.id, message=user_input)
response = await agent.get_response(thread_id=thread.id)
print(response)
finally:
await client.agents.delete_thread(thread.id)
İsteğe bağlı olarak, aracı şu şekilde çağrılabilir:
for user_input in USER_INPUTS:
await agent.add_chat_message(thread_id=thread.id, message=user_input)
async for content in agent.invoke(thread_id=thread.id):
print(content.content)
Bir aracı da akışlı yanıt üretebilir:
ChatMessageContent message = new(AuthorRole.User, "<your user input>");
await agent.AddChatMessageAsync(threadId, message);
await foreach (StreamingChatMessageContent response in agent.InvokeStreamingAsync(thread.Id))
{
Console.Write(response.Content);
}
for user_input in USER_INPUTS:
await agent.add_chat_message(thread_id=thread.id, message=user_input)
async for content in agent.invoke_stream(thread_id=thread.id):
print(content.content, end="", flush=True)
Temsilciler şu anda Java'da kullanılamıyor.
Eklentileri bir AzureAIAgent
ile kullanma
Semantik Çekirdek, gelişmiş işlevsellik için özel eklentilerle bir AzureAIAgent
genişletmeyi destekler:
Plugin plugin = KernelPluginFactory.CreateFromType<YourPlugin>();
AIProjectClient client = AzureAIAgent.CreateAzureAIClient("<your connection-string>", new AzureCliCredential());
AgentsClient agentsClient = client.GetAgentsClient();
Agent definition = agentsClient.CreateAgentAsync(
"<name of the the model used by the agent>",
name: "<agent name>",
description: "<agent description>",
instructions: "<agent instructions>");
AzureAIAgent agent = new(definition, agentsClient, plugins: [plugin]);
from semantic_kernel.functions import kernel_function
class SamplePlugin:
@kernel_function(description="Provides sample data.")
def get_data(self) -> str:
return "Sample data"
ai_agent_settings = AzureAIAgentSettings.create()
async with (
DefaultAzureCredential() as creds,
AzureAIAgent.create_client(credential=creds) as client,
):
agent_definition = await client.agents.create_agent(
model=ai_agent_settings.model_deployment_name,
)
agent = AzureAIAgent(
client=client,
definition=agent_definition,
plugins=[SamplePlugin()]
)
Ajanlar şu anda Java'da kullanılamıyor.
Gelişmiş Özellikler
AzureAIAgent
aşağıdakiler gibi gelişmiş araçlardan yararlanabilir:
Kod Yorumlayıcı
Kod Yorumlayıcı, aracıların korumalı bir yürütme ortamında (Azure AI Aracısı Hizmet Kodu Yorumlayıcısı) Python kodu yazmasına ve çalıştırmasına olanak tanır.
AIProjectClient client = AzureAIAgent.CreateAzureAIClient("<your connection-string>", new AzureCliCredential());
AgentsClient agentsClient = client.GetAgentsClient();
Agent definition = agentsClient.CreateAgentAsync(
"<name of the the model used by the agent>",
name: "<agent name>",
description: "<agent description>",
instructions: "<agent instructions>",
tools: [new CodeInterpreterToolDefinition()],
toolResources:
new()
{
CodeInterpreter = new()
{
FileIds = { ... },
}
}));
AzureAIAgent agent = new(definition, agentsClient);
from azure.ai.projects.models import CodeInterpreterTool
async with (
DefaultAzureCredential() as creds,
AzureAIAgent.create_client(credential=creds) as client,
):
code_interpreter = CodeInterpreterTool()
agent_definition = await client.agents.create_agent(
model=ai_agent_settings.model_deployment_name,
tools=code_interpreter.definitions,
tool_resources=code_interpreter.resources,
)
Ajanlar şu anda Java'da kullanılamıyor.
Dosya Arama
Dosya arama, aracıları modelinin dışından gelen bilgiyle destekler (Azure AI Aracısı Hizmeti Dosya Arama Aracı).
AIProjectClient client = AzureAIAgent.CreateAzureAIClient("<your connection-string>", new AzureCliCredential());
AgentsClient agentsClient = client.GetAgentsClient();
Agent definition = agentsClient.CreateAgentAsync(
"<name of the the model used by the agent>",
name: "<agent name>",
description: "<agent description>",
instructions: "<agent instructions>",
tools: [new FileSearchToolDefinition()],
toolResources:
new()
{
FileSearch = new()
{
VectorStoreIds = { ... },
}
}));
AzureAIAgent agent = new(definition, agentsClient);
from azure.ai.projects.models import FileSearchTool
async with (
DefaultAzureCredential() as creds,
AzureAIAgent.create_client(credential=creds) as client,
):
file_search = FileSearchTool(vector_store_ids=[vector_store.id])
agent_definition = await client.agents.create_agent(
model=ai_agent_settings.model_deployment_name,
tools=file_search.definitions,
tool_resources=file_search.resources,
)
Ajanlar şu anda Java'da kullanılamıyor.
OpenAPI Tümleştirmesi
Aracınızı bir dış API'ye bağlar (OpenAPI Belirtilen Araçlarile Azure AI Aracı Hizmeti'ni kullanma ).
AIProjectClient client = AzureAIAgent.CreateAzureAIClient("<your connection-string>", new AzureCliCredential());
AgentsClient agentsClient = client.GetAgentsClient();
string apiJsonSpecification = ...; // An Open API JSON specification
Agent definition = agentsClient.CreateAgentAsync(
"<name of the the model used by the agent>",
name: "<agent name>",
description: "<agent description>",
instructions: "<agent instructions>",
tools: [
new OpenApiToolDefinition(
"<api name>",
"<api description>",
BinaryData.FromString(apiJsonSpecification),
new OpenApiAnonymousAuthDetails())
],
);
AzureAIAgent agent = new(definition, agentsClient);
from azure.ai.projects.models import OpenApiTool, OpenApiAnonymousAuthDetails
async with (
DefaultAzureCredential() as creds,
AzureAIAgent.create_client(credential=creds) as client,
):
openapi_spec_file_path = "sample/filepath/..."
with open(os.path.join(openapi_spec_file_path, "spec_one.json")) as file_one:
openapi_spec_one = json.loads(file_one.read())
with open(os.path.join(openapi_spec_file_path, "spec_two.json")) as file_two:
openapi_spec_two = json.loads(file_two.read())
# Note that connection or managed identity auth setup requires additional setup in Azure
auth = OpenApiAnonymousAuthDetails()
openapi_tool_one = OpenApiTool(
name="<name>",
spec=openapi_spec_one,
description="<description>",
auth=auth,
)
openapi_tool_two = OpenApiTool(
name="<name>",
spec=openapi_spec_two,
description="<description>",
auth=auth,
)
agent_definition = await client.agents.create_agent(
model=ai_agent_settings.model_deployment_name,
tools=openapi_tool_one.definitions + openapi_tool_two.definitions,
)
Temsilciler şu anda Java'da kullanılamıyor.
AzureAI Arama Tümleştirmesi
Aracınızla mevcut bir Azure AI Search dizinini kullanma (Var olan yapay zeka arama dizinini kullanma).
AIProjectClient client = AzureAIAgent.CreateAzureAIClient("<your connection-string>", new AzureCliCredential());
AgentsClient agentsClient = client.GetAgentsClient();
ConnectionsClient cxnClient = client.GetConnectionsClient();
ListConnectionsResponse searchConnections = await cxnClient.GetConnectionsAsync(AzureAIP.ConnectionType.AzureAISearch);
ConnectionResponse searchConnection = searchConnections.Value[0];
Agent definition = agentsClient.CreateAgentAsync(
"<name of the the model used by the agent>",
name: "<agent name>",
description: "<agent description>",
instructions: "<agent instructions>",
tools: [new AzureAIP.AzureAISearchToolDefinition()],
toolResources: new()
{
AzureAISearch = new()
{
IndexList = { new AzureAIP.IndexResource(searchConnection.Id, "<your index name>") }
}
});
AzureAIAgent agent = new(definition, agentsClient);
from azure.ai.projects.models import AzureAISearchTool, ConnectionType
async with (
DefaultAzureCredential() as creds,
AzureAIAgent.create_client(credential=creds) as client,
):
conn_list = await client.connections.list()
ai_search_conn_id = ""
for conn in conn_list:
if conn.connection_type == ConnectionType.AZURE_AI_SEARCH:
ai_search_conn_id = conn.id
break
ai_search = AzureAISearchTool(
index_connection_id=ai_search_conn_id,
index_name=AZURE_AI_SEARCH_INDEX_NAME,
)
agent_definition = await client.agents.create_agent(
model=ai_agent_settings.model_deployment_name,
instructions="Answer questions using your index.",
tools=ai_search.definitions,
tool_resources=ai_search.resources,
headers={"x-ms-enable-preview": "true"},
)
Ajanlar şu anda Java'da kullanılamıyor.
Mevcut AzureAIAgent
'ı Geri Getirme
Mevcut bir temsilci, yardımcı kimliği belirtilerek alınabilir ve yeniden kullanılabilir.
Agent definition = agentsClient.GetAgentAsync("<your agent id>");
AzureAIAgent agent = new(definition, agentsClient);
agent_definition = await client.agents.get_agent(assistant_id="your-agent-id")
agent = AzureAIAgent(client=client, definition=agent_definition)
Aracılar şu anda Java'da kullanılamıyor.
Bir AzureAIAgent
'ı silme
Ajanlar ve ilişkili iş parçacıkları artık gerekli olmadığında silinebilir.
await agentsClient.DeleteThreadAsync(thread.Id);
await agentsClient.DeleteAgentAsync(agent.Id);
await client.agents.delete_thread(thread.id)
await client.agents.delete_agent(agent.id)
Vektör deposu veya dosyalarla çalışıyorsanız, bunlar da silinebilir:
await agentsClient.DeleteVectorStoreAsync("<your store id>");
await agentsClient.DeleteFileAsync("<your file id>");
await client.agents.delete_file(file_id=file.id)
await client.agents.delete_vector_store(vector_store_id=vector_store.id)
Aracılar şu anda Java'da kullanılamıyor.
dosya arama aracı hakkında daha fazla bilgi Azure AI Agent Service dosya arama aracı makalesinde açıklanmıştır.
How-To
AzureAIAgent
kullanmanın pratik örnekleri için GitHub'da kod örneklerimize bakın:
- Azure AI Agents Kullanmaya Başlama
- Gelişmiş Azure AI Aracısı Kod Örnekleri
- Azure AI Agents Kullanmaya Başlama
- Gelişmiş Azure AI Aracısı Kod Örnekleri
Ajanlar şu anda Java'da kullanılamıyor.