Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tip
K dispozici je nástroj pro migraci , který pomáhá automatizovat migraci z rozhraní API Asistentů na agenty.
Služba Foundry Agent Service poskytuje upgradované vývojářské prostředí pro vytváření inteligentních agentů, které se dají snadno sestavit, verze, provozovat a sledovat. Nové rozhraní API agentů zavádí modernizované sady SDK, nové funkce na podnikové úrovni a zachovává funkce identit, zásad správného řízení a pozorovatelnosti, které v současnosti využíváte.
Požadavky
- Předplatné Azure. Vytvořte si ho zdarma.
- Projekt Microsoft Foundry.
- Sada SDK služby agenta Foundry pro váš jazyk a odpovídající balíček identity pro ověřování. Nainstalujte balíčky pro váš jazyk a přihlaste se s
az loginnebo použijteDefaultAzureCredential:
pip install "azure-ai-projects>=2.3.0"
- Existující kód agentů nebo asistentů, který chcete migrovat.
Následující kód inicializuje klienty použité v této příručce:
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
# Format: "https://resource_name.services.ai.azure.com/api/projects/project_name"
PROJECT_ENDPOINT = "your_project_endpoint"
project = AIProjectClient(
endpoint=PROJECT_ENDPOINT,
credential=DefaultAzureCredential(),
)
openai = project.get_openai_client()
Použijte project pro vytváření a verzování agenta. Používejte openai (nebo ekvivalent ve vašem jazyce) ke konverzacím a odpovědím.
Klíčové výhody
Noví agenti poskytují následující výhody:
Produktivita vývojářů
- ⭐ Další modely. Vygenerujte odpovědi pomocí libovolného modelu Foundry buď ve vašem agentu, nebo přímo jako volání generování odpovědí.
- Další funkce. Vyhledávání na webu, vyhledávání souborů, interpret kódu, volání nástroje MCP, generování obrázků a souhrny důvodů.
- Moderní primitiva rozhraní API Je postaveno na rozhraní API pro odpovědi místo staršího rozhraní API asistentů.
- Režim pozadí. Podpora dlouhotrvajících nástrojů (jako je generování imagí) a trvalých datových proudů (podporuje scénáře odpojení a opětovného připojení)
- Odolný vůči budoucnosti. Nové funkce a podpora modelů jsou k dispozici pouze u nových agentů.
- Nové typy agentů. Vytvořte agenty založené na promptech a hostované agenty.
Připravenost podniku
- ⭐ Single-tenant storage. Použijte úložiště s jedním tenantem a použijte vlastní Azure Cosmos DB pro ukládání stavu a zabezpečení dat.
- Lepší zabezpečení. Určete, kdo může spouštět nebo upravovat definice agenta.
- Oddělení povinností. Definujte agenty jednou a spusťte je s různými vstupy.
- Nasaditelné agenty. Agenti mohou být vystaveni jako jednotlivé koncové body.
Modernizace rozhraní API
- Vylepšená správa stavu Používá konverzace místo vláken a zpráv.
- Stavový kontext Automaticky zachovává kontext napříč voláními.
- Nadmnožina API rozhraní pro odpovědi Vychází z rozhraní API pro odpovědi a přidává další funkce.
- Pracovní postupy s jedním nebo více agenty Snadno propojte agenty pro složité pracovní postupy.
Klíčové změny
Následující tabulka shrnuje hlavní změny rozhraní API mezi předchozím a aktuálním prostředím agenta.
| Před | Po | Podrobnosti |
|---|---|---|
| Vlákna | Konverzace | Podporuje streamy položek, nejen zprávy. |
| Běží | Reakce | Odpovědi odesílají vstupní položky nebo používají objekt konverzace a přijímají výstupní položky. Smyčky volání nástrojů jsou explicitně spravované. |
| Asistenti / agenti | Agenti (nové) | Podpora promptů pro podnikové nasazení a hostovaných agentů se stavovým kontextem standardně pro jakýkoli model Foundry. |
Dostupnost agentního nástroje
Následující tabulka porovnává nástroje agenta dostupné v klasických agentech a novou službu Foundry Agent Service. Použijte ho k identifikaci nástrojů, které se přímo přenesly, které se změnily a které jsou výhradní pro nové prostředí.
| Nástroj | Slévárna (klasická) | Slévárna (nová) |
|---|---|---|
| Agent k agentovi (A2A) | Ne | Ano (Veřejný náhled) |
| Azure AI Vyhledávač | Ano (GA) | Ano (GA) |
| Azure Functions | Ano (GA) | Ne |
| Automatizace prohlížeče | Ano (Veřejný náhled) | Ano (Veřejný náhled) |
| Interpretér kódu | Ano (GA) | Ano (GA) |
| Použití počítače | Ano (Veřejný náhled) | Ano (Veřejný náhled) |
| Propojení agenti | Ano (Veřejný náhled) | Ne (doporučení: nástroj A2A) |
| Hloubkové výzkumy | Ano (Veřejný náhled) | Ne (doporučení: Model hloubkového výzkumu pomocí nástroje Pro vyhledávání na webu) |
| datový agent Fabric | Ano (Veřejný náhled) | Ano (Veřejný náhled) |
| Hledání souborů | Ano (GA) | Ano (GA) |
| Funkce | Ano (GA) | Ano (GA) |
| Uzemnění pomocí vyhledávání Bingem | Ano (GA) | Ano (GA) |
| Uzemnění pomocí vyhledávání na míru od Bingu | Ano (Veřejný náhled) | Ano (Veřejný náhled) |
| Generování obrázků | Ne | Ano (Veřejný náhled) |
| MCP | Ano (Veřejný náhled) | Ano (GA) |
| OpenAPI | Ano (GA) | Ano (GA) |
| Základy SharePoint | Ano (Veřejný náhled) | Ano (Veřejný náhled) |
| Vyhledávání na webu | Ne | Ano (GA) |
Důležité
V novém rozhraní API používají rozhraní API pro konverzace a odpovědi OpenAI klienta (nebo jeho jazykový ekvivalent). V Python volejte project.get_openai_client(). V jazyce C# použijte projectClient.ProjectOpenAIClient.GetProjectResponsesClientForAgent(). V JavaScriptu zavolejte projectClient.getOpenAIClient(). V Java pomocí AgentsClientBuilder sestavte ResponsesClient. Vytváření a správa verzí agenta zůstávají v klientovi projektu. Příklady v každé části ukazují, kterého klienta použít.
Migrace vláken do konverzací
Vlákna ukládají zprávy na straně serveru. Konverzace může ukládat položky, včetně zpráv, volání nástrojů, výstupů nástrojů a dalších dat.
Požadavky
Následující příklady porovnávají vytváření vláken (předchozí) s vytvářením konverzací (aktuální). Aktuální přístup používá klienta OpenAI získaného z project.get_openai_client().
Předchozí – vlákna
thread = client.agents.threads.create(
messages=[{"role": "user", "content": "Tell me a one line funny story about unicorns"}],
metadata={"agent": "my-awesome-agent"},
)
Aktuální – konverzace
conversation = openai.conversations.create(
items=[
{
"type": "message",
"role": "user",
"content": "Tell me a one line funny "
"story about unicorns",
}
],
metadata={"agent": "my-awesome-agent"},
)
Reakce
Odpovědi JSON zobrazují strukturální rozdíly mezi objekty vlákna a objekty konverzace.
Předchozí – vlákna
{
"id": "thread_1234abcd",
"object": "thread",
"created_at": 1762217858,
"metadata": {"agent": "my-awesome-agent"},
"tool_resources": {}
}
Aktuální – konverzace
{
"id":"conv_1234abcd",
"created_at":1762217961,
"metadata":{"agent":"my-awesome-agent"},
"object":"conversation"
}
Přidání položek do existující konverzace
Po vytvoření konverzace použijte conversations.items.create(), abyste přidali další zprávy. Tento vzor nahrazuje přidávání zpráv do vláken za client.agents.messages.create().
Předchozí – přidání zprávy do vlákna
message = client.agents.messages.create(
thread_id=thread.id,
role="user",
content="Follow-up question about the same topic",
)
Aktuální – přidání položek do konverzace
openai.conversations.items.create(
conversation_id=conversation.id,
items=[
{
"type": "message",
"role": "user",
"content": "Follow-up question "
"about the same topic",
}
],
)
Migrace běhů na odpovědi
Spuštění byla asynchronní procesy, které se spouštěly na vláknech. Odpovědi jsou jednodušší: zadejte sadu vstupních položek, které se mají spustit, a získejte seznam výstupních položek zpět. Odpovědi se dají použít samostatně nebo s objekty konverzace pro ukládání kontextu. Rozhraní API pro odpovědi používá klienta OpenAI.
Požadavky
Následující příklady porovnávají způsob vyvolání logiky agenta. Předchozí přístup používal asynchronní běhy s periodickým dotazováním. Aktuální přístup volá funkci responses.create() na klientovi OpenAI.
Předchozí – spuštění
thread_id = "thread_abcd1234"
assistant_id = "asst_efgh5678"
run = project_client.agents.runs.create(
thread_id=thread_id,
agent_id=assistant_id,
additional_instructions="Please address the user as Jane Doe. The user has a premium account"
)
while run.status in ("queued", "in_progress"):
time.sleep(1)
run = project_client.agents.runs.get(thread_id=thread_id, run_id=run.id)
Aktuální – odpovědi
conversation_id = "conv_11112222AAAABBBB"
response = openai.responses.create(
input="Hi, Agent! Draw a graph for a line "
"with a slope of 4 and "
"y-intercept of 9.",
conversation=conversation_id,
extra_body={
"agent_reference": {
"name": "my-agent",
"type": "agent_reference",
}
},
)
Reakce
Předchozí – spuštění
{
"id": "run_xyz",
"object": "thread.run",
"created_at": 1762218810,
"assistant_id": "asst_efgh5678",
"thread_id": "thread_abcd1234",
"status": "completed",
"started_at": 1762218810,
"expires_at": null,
"cancelled_at": null,
"failed_at": null,
"completed_at": 1762218812,
"required_action": null,
"last_error": null,
"model": "gpt-4.1",
"instructions": "You politely help with math questions. Use the Code Interpreter tool when asked to visualize numbers. Please address the user as Jane Doe. The user has a premium account",
"tools": [
{
"type": "code_interpreter"
}
],
"tool_resources": {},
"metadata": {},
"temperature": 1.0,
"top_p": 1.0,
"max_completion_tokens": null,
"max_prompt_tokens": null,
"truncation_strategy": {
"type": "auto",
"last_messages": null
},
"incomplete_details": null,
"usage": {
"prompt_tokens": 1216,
"completion_tokens": 76,
"total_tokens": 1292,
"prompt_token_details": {
"cached_tokens": 0
}
},
"response_format": "auto",
"tool_choice": "auto",
"parallel_tool_calls": true
}
Aktuální – odpovědi
{
"id": "resp_3483e9c8dda4f165006909550333588190afc76a645a0e877a",
"created_at": 1762219267.0,
"error": null,
"incomplete_details": null,
"instructions": null,
"metadata": {
"x-ms-telemetry-agent-kind": "",
"x-ms-telemetry-user-agent": "OpenAI/Python 2.4.0",
"x-ms-telemetry-response-start-time": "2025-11-04T01:21:06.5346780+00:00"
},
"model": "gpt-4.1",
"object": "response",
"output": [
{
"id": "msg_3483e9c8dda4f1650069095503abf881909917865574cddf2c",
"content": [
{
"annotations": [],
"text": "Of course! Here's a simple plot for the line with a rate of change of 4 and a y-intercept of 9.\\n\\nThe equation of the line is:\\n\\n\\\\[ y = 4x + 9 \\\\]\\n\\nLet's draw a graph for it:\\n\\n---\\n\\n```plaintext\\n |\\n20| *\\n | *\\n | *\\n | *\\n10| *\\n | *\\n | *\\n |*\\n +---------------------------\\n -2 -1 0 1 2 3\\n```\\n\\n**Key points:**\\n- The y-intercept is **9**, so at \\\\(x = 0\\\\), \\\\(y = 9\\\\) (point: (0,9))\\n- For each step right (increase in x), y goes up 4 units (rate of change \\\\(m = 4\\\\))\\n - For \\\\(x = 1\\\\): \\\\(y = 4(1) + 9 = 13\\\\) (point: (1,13))\\n - For \\\\(x = -1\\\\): \\\\(y = 4(-1) + 9 = 5\\\\) (point: (-1,5))\\n\\nIf you'd like a precise graph or want to visualize it interactively, let me know!",
"type": "output_text",
"logprobs": []
}
],
"role": "assistant",
"status": "completed",
"type": "message"
}
],
"parallel_tool_calls": true,
"temperature": 1.0,
"tool_choice": "auto",
"tools": [],
"top_p": 1.0,
"background": false,
"conversation": {
"id": "conv_3483e9c8dda4f16500GwcAgtdWlSmbMPzYLjWvDjiSe6LSFcC6"
},
"max_output_tokens": null,
"max_tool_calls": null,
"previous_response_id": null,
"prompt": null,
"prompt_cache_key": null,
"reasoning": {
"effort": null,
"generate_summary": null,
"summary": null
},
"safety_identifier": null,
"service_tier": "default",
"status": "completed",
"text": {
"format": {
"type": "text"
},
"verbosity": "medium"
},
"top_logprobs": 0,
"truncation": "disabled",
"usage": {
"input_tokens": 45,
"input_tokens_details": {
"cached_tokens": 0
},
"output_tokens": 264,
"output_tokens_details": {
"reasoning_tokens": 0
},
"total_tokens": 309
},
"user": null,
"content_filters": null,
"store": true
}
Přechod od klasických agentů k novým agentům
Pokud používáte metodu client.agents.create_agent() ze starších verzí sady SDK, migrujte na client.agents.create_version(). Nová metoda zavádí definice strukturovaného agenta s explicitní kind, modela instructions pole.
Požadavky
Předchozí
agent = client.agents.create_agent(
model="gpt-4.1",
name="my-agent", # Name of the agent
instructions="You politely help with math questions. Use the Code Interpreter tool when asked to visualize numbers.", # Instructions for the agent
tools=code_interpreter.definitions, # Attach the tool
)
Aktuální
from azure.ai.projects.models import (
CodeInterpreterTool,
PromptAgentDefinition,
)
agent = project.agents.create_version(
agent_name="my-agent",
definition=PromptAgentDefinition(
model="gpt-4.1",
instructions=(
"You politely help with math "
"questions. Use the Code "
"Interpreter tool when asked to "
"visualize numbers."
),
tools=[CodeInterpreterTool()],
),
)
Reakce
Následující příklady JSON porovnávají objekty odpovědi vrácené předchozími a aktuálními metodami vytvoření agenta.
Předchozí
{
'id': 'asst_AVKrdr2KJthDnZiJ51nca1jy',
'object': 'assistant',
'created_at': 1762218496,
'name': 'my-agent',
'description': None,
'model': 'gpt-4.1',
'instructions': 'You politely help with math questions. Use the Code Interpreter tool when asked to visualize numbers.',
'tools': [
{
'type': 'code_interpreter'
}
],
'top_p': 1.0,
'temperature': 1.0,
'tool_resources': {
'code_interpreter': {
'file_ids': [
]
}
},
'metadata': {
},
'response_format': 'auto'
}
Aktuální
{
"metadata": {},
"object": "agent.version",
"id": "code-agent:1",
"name": "code-agent",
"version": "1",
"description": "Agent with code interpreter",
"created_at": 1772045947,
"definition": {
"kind": "prompt",
"model": "gpt-4.1",
"instructions": "You politely help with math questions. Use the Code Interpreter tool when asked to visualize numbers.",
"tools": [
{
"type": "code_interpreter"
}
]
}
}
Převod asistentů na nové agenty
Pokud váš kód používá rozhraní API pomocníků OpenAI (client.beta.assistants.create()), migrujte do služby Foundry Agent Service pomocí client.agents.create_version(). Následující příklady ukazují strukturální rozdíly.
Předchozí – asistenti
assistant = client.beta.assistants.create(
model="gpt-4.1",
name="my-assistant",
instructions="You politely help with math questions. Use the Code Interpreter tool when asked to visualize numbers.", # Instructions for the agent
tools=[{"type": "code_interpreter"}],
)
Aktuální – nové agenty
from azure.ai.projects.models import (
CodeInterpreterTool,
PromptAgentDefinition,
)
agent = project.agents.create_version(
agent_name="my-agent",
definition=PromptAgentDefinition(
model="gpt-4.1",
instructions=(
"You politely help with math "
"questions. Use the Code "
"Interpreter tool when asked to "
"visualize numbers."
),
tools=[CodeInterpreterTool()],
),
)
Spuštění nástroje pro migraci
Nástroj migrace je k dispozici na GitHub, který vám pomůže automatizovat migraci agentů a asistentů. Nástroj migruje konstrukty kódu, jako jsou definice agenta, vytváření vláken, vytváření zpráv a vytváření spuštění. Nemigruje data o stavu, jako jsou minulé spuštění, vlákna nebo zprávy. Po migraci můžete spustit nový kód a všechna nová stavová data se vytvoří v aktualizovaném formátu.
Následující příklad ukazuje úplné porovnání před a po. Všimněte si, že aktuální kód používá project jak pro vytváření agentů, tak openai pro konverzace a odpovědi.
Předchozí
agent = project_client.agents.create_agent(
model="gpt-4.1",
name="my-agent",
instructions="You politely help with math questions. Use the Code Interpreter tool when asked to visualize numbers.", # Instructions for the agent
tools=[{"type": "code_interpreter"}]
)
thread = project_client.agents.threads.create()
message = project_client.agents.messages.create(
thread_id=thread.id,
role="user", # Role of the message sender
content="Hi, Agent! Draw a graph for a line with a rate of change of 4 and y-intercept of 9.", # Message content
)
run = project_client.agents.runs.create_and_process(
thread_id=thread.id,
agent_id=agent.id,
additional_instructions="Please address the user as Jane Doe. The user has a premium account",
)
messages = project_client.agents.messages.list(thread_id=thread.id)
for message in messages:
print(f"Role: {message.role}, Content: {message.content}")
Aktuální
from azure.ai.projects.models import (
CodeInterpreterTool,
PromptAgentDefinition,
)
# Create the agent
agent = project.agents.create_version(
agent_name="my-agent",
definition=PromptAgentDefinition(
model="gpt-4.1",
instructions=(
"You politely help with math "
"questions. Use the Code "
"Interpreter tool when asked "
"to visualize numbers."
),
tools=[CodeInterpreterTool()],
),
)
# Create a conversation with initial message
conversation = openai.conversations.create(
items=[
{
"type": "message",
"role": "user",
"content": (
"Hi, Agent! Draw a graph "
"for a line with a rate "
"of change of 4 and "
"y-intercept of 9."
),
}
],
)
# Send a response with the agent
response = openai.responses.create(
conversation=conversation.id,
extra_body={
"agent_reference": {
"name": agent.name,
"type": "agent_reference",
}
},
input=(
"Please address the user as "
"Jane Doe. The user has a "
"premium account"
),
)
# Print the response output
for item in response.output:
if item.type == "message":
for block in item.content:
print(block.text)
Ověřte svou migraci
Po migraci kódu ověřte, že všechno funguje správně:
- Spusťte aktualizovaný kód a ověřte, že se spustí bez chyb.
-
Zkontrolujte vytvoření agenta tím, že potvrdíte, že
create_version()vrací objekt s polemidaversionpolem. - Otestujte konverzaci tak, že vytvoříte konverzaci, odešlete odpověď a ověříte, že se vrátí výstupní položky.
- Potvrďte uchovávání kontextu odesláním více odpovědí do stejné konverzace a kontrolou, že si agent pamatuje dřívější zprávy.
Řešení běžných problémů
| Příznak | Příčina | Rozlišení |
|---|---|---|
Python:AttributeError: 'AIProjectClient' has no attribute 'conversations' |
Místo klienta OpenAI jste volali conversations.create() klienta projektu. |
Použijte project.get_openai_client() pro získání klienta OpenAI, potom zavolejte openai.conversations.create(). |
C#: Azure.AI.Extensions.OpenAI namespace nebyl nalezen. |
Chybí balíček NuGet Azure.AI.Extensions.OpenAI. |
Nainstalujte Azure.AI.Projects (který jako závislosti přináší Azure.AI.Extensions.OpenAI a Azure.AI.Projects.Agents). |
JavaScript: getOpenAIClient is not a function |
Používáte starší verzi @azure/ai-projects. |
Aktualizovat na @azure/ai-projects@2.3.0 nebo novější: npm install @azure/ai-projects. |
Java: AgentsClientBuilder nejde vyřešit |
Závislost na azure-ai-agents Maven chybí nebo je zastaralá. |
Přidejte com.azure:azure-ai-agents:2.2.0 k závislostem pom.xml. |
create_agent() je odebraný. |
Používaly se create_agent()starší verze sady SDK, které byly odebrány ve verzi 2.0.0. |
Nahraďte create_version() (Python/JS) nebo CreateAgentVersionAsync() (C#) nebo createAgentVersion() (Java) a předejte objekt PromptAgentDefinition. |
| Stará data vlákna nejsou k dispozici. | Nástroj pro migraci nemigruje stavová data (minulé spuštění, vlákna nebo zprávy). | Po migraci zahajte nové konverzace. Historická data zůstávají přístupná prostřednictvím předchozího rozhraní API, dokud nebudou zastaralá. |
responses.create() vyvolá chybu modelu. |
Název modelu může být ve vaší oblasti nesprávný nebo nedostupný. | Ověřte název modelu v projektu Foundry a zkontrolujte dostupnost oblasti modelu. |