你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Note
本文档指的是 Microsoft Foundry(新) 门户网站。
在本快速入门中,你将使用 Microsoft Foundry 来:
- 创建项目
- 部署模型
- 运行聊天完成
- 创建并运行代理
- 将文件上传到代理
在本快速入门中,你将使用 Microsoft Foundry 来:
- 创建项目
- 部署模型
- 准备好代码 - 安装必要的包并进行身份验证
- 与模型聊天
- 创建代理
- 与代理聊天
Microsoft Foundry SDK 以多种语言提供,包括 Python、Java、TypeScript 和 C# 。 本快速入门提供了每种语言的说明。
Tip
本文的其余部分介绍如何创建和使用 Foundry 项目。 若要改为使用基于中心的项目,请参阅快速入门:开始使用 Microsoft Foundry(中心项目)。 我需要哪种类型的项目?
Prerequisites
- 拥有有效订阅的 Azure 帐户。 如果没有帐户,请创建一个 免费的 Azure 帐户,其中包括免费试用订阅。
- 必须是订阅的 所有者 才能获得使用项目所需的适当访问控制。
- 按照 准备开发环境中所述安装所需的语言运行时、全局工具和 VS Code 扩展。
Important
在开始之前,请确保开发环境已准备就绪。
本快速入门重点介绍 特定于方案的步骤 ,例如 SDK 安装、身份验证和运行示例代码。
创建资源
在门户中,可以浏览来自许多不同提供商的丰富前沿模型目录。 对于本教程,搜索并选择 gpt-4o 模型。
-
登录到 Microsoft Foundry。 确保 New Foundry 开关处于关闭状态。 这些步骤涉及到 Foundry(经典)。
如果你正在参与某个项目,请在左上角的导航栏中选择“Microsoft Foundry”以退出该项目。 你将在一刻内创建新的一个。
在登陆页面或 模型目录中,选择 gpt-4o (或 gpt-4o-mini)。
选择“使用此模型”。 出现提示时,输入一个新项目名称,然后选择“ 创建”。
查看部署名称并选择“创建”。
接下来,在选择部署类型后,选择“连接并部署”。
在部署后,从部署页面选择“在操场中打开”。
进入聊天操场后,模型已预先部署完成并可直接使用。
如果要生成代理,可以改为从 “创建代理”开始。 这些步骤类似,但顺序不同。 创建项目后,您将进入代理体验区,而不是聊天体验区。
拥有代理后,可以在代码或门户中与其交互。
你将从 Microsoft Foundry 门户开始创建项目并部署模型。 本快速入门使用 gpt-4-1-mini 模型,但你可以选择来自多个提供商支持的其他任何模型。
- 登录到 Microsoft Foundry。 确保 New Foundry 开关处于关闭状态。 这些步骤涉及到 Foundry(经典)。
登录到 Microsoft Foundry。 确保 New Foundry 开关处于打开状态。 这些步骤适用于 Foundry(新)。
- 项目有助于组织工作。 正在处理的项目显示在左上角。
- 若要创建新项目,请选择项目名称,然后选择 新项目。
- 为项目命名并选择“ 创建项目”。
- 现在,将模型部署到项目中:
- 选择右上角导航中的 “发现 ”。
- 选择 模型。
- 搜索 gpt-4.1-mini 模型。
- 选择“ 部署>默认设置” ,将其添加到项目。
Foundry Models 允许客户使用单一的端点和凭据,访问旗舰模型提供商的最强大模型。 这意味着你可以在模型之间切换,并从应用程序中使用它们,并且一行代码都不需要修改。
现在可以继续与模型交互并创建代理。
准备好代码
Tip
代码使用 Foundry 项目(经典)API ,并且与 Foundry 项目(新)API 不兼容(预览版)。 切换到 Foundry(新)文档以使用 Foundry 项目(新)API(预览版)。
安装以下包:
pip install openai azure-identity azure-ai-projects==1.0.0-
Microsoft Foundry 模型允许客户通过一个终结点和凭据来使用由旗舰模型提供商提供的最强大的模型。 这意味着你可以在模型之间切换,并从应用程序中使用它们,并且一行代码都不需要修改。
在项目的“概述”部分复制“Foundry 项目终结点”。 稍后会用到它。
Tip
如果未看到“Foundry 项目终结点”,则使用的是基于中心的项目。 (请参阅 项目类型)。 切换到 Foundry 项目,或使用前面的步骤创建一个。
- 从右上角导航中选择 “主页 ”。
- 选择 “密钥 ”并复制 终结点。 稍后会用到它。
在运行 Python 脚本之前,请确保使用 CLI
az login(或az login --use-device-code) 命令登录以进行身份验证。
请阅读下文或获取代码:
Important
本文中的代码使用当前处于预览状态的包。 此预览版未提供服务级别协议,不建议将其用于生产工作负载。 某些功能可能不受支持或者受限。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款。
设置环境变量。
将终结点存储为环境变量。 此外,请设置这些值,以便在脚本中使用。
-
复制欢迎屏幕中的终结点。 在下一步骤中将使用它。
设置这些环境变量以在脚本中使用:
AZURE_AI_FOUNDRY_PROJECT_ENDPOINT=<endpoint copied from welcome screen> AZURE_AI_FOUNDRY_AGENT_NAME="MyAgent" AZURE_AI_FOUNDRY_MODEL_DEPLOYMENT_NAME="gpt-4.1-mini"
安装和进行身份验证
Tip
代码使用 Foundry 项目(新)API(预览版), 并且与 Foundry 项目(经典)API 版本不兼容。 切换到 Foundry(经典)文档,以查看 Foundry 项目(经典版)API 版本 。
安装这些包,包括预览版的
azure-ai-projects。 此版本使用 新 Foundry 项目 API(预览版)。pip install azure-ai-projects --pre pip install openai azure-identity python-dotenv在运行 Python 脚本之前,请确保使用 CLI
az login(或az login --use-device-code) 命令登录以进行身份验证。
请阅读下文或获取代码:
与模型聊天
聊天完成是 AI 应用程序的基本构建基块。 您可以使用聊天完成功能,发送一系列消息并从模型获取响应。
Tip
代码使用 Foundry 项目(经典)API ,并且与 Foundry 项目(新)API 不兼容(预览版)。 切换到 Foundry(新)文档以使用 Foundry 项目(新)API(预览版)。
用你的终结点替换此代码中的 endpoint:
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
project = AIProjectClient(
endpoint="https://your-foundry-resource-name.ai.azure.com/api/projects/project-name",
credential=DefaultAzureCredential(),
)
models = project.get_openai_client(api_version="2024-10-21")
response = models.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": "You are a helpful writing assistant"},
{"role": "user", "content": "Write me a poem about flowers"},
],
)
print(response.choices[0].message.content)
与模型交互是 AI 应用程序的基本构建基块。 发送输入并从模型接收响应:
Tip
代码使用 Foundry 项目(新)API(预览版), 并且与 Foundry 项目(经典)API 版本不兼容。 切换到 Foundry(经典)文档,以查看 Foundry 项目(经典版)API 版本 。
import os
from dotenv import load_dotenv
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
load_dotenv()
print(f"Using AZURE_AI_FOUNDRY_PROJECT_ENDPOINT: {os.environ['AZURE_AI_FOUNDRY_PROJECT_ENDPOINT']}")
print(f"Using AZURE_AI_FOUNDRY_MODEL_DEPLOYMENT_NAME: {os.environ['AZURE_AI_FOUNDRY_MODEL_DEPLOYMENT_NAME']}")
project_client = AIProjectClient(
endpoint=os.environ["AZURE_AI_FOUNDRY_PROJECT_ENDPOINT"],
credential=DefaultAzureCredential(),
)
openai_client = project_client.get_openai_client()
response = openai_client.responses.create(
model=os.environ["AZURE_AI_FOUNDRY_MODEL_DEPLOYMENT_NAME"],
input="What is the size of France in square miles?",
)
print(f"Response output: {response.output_text}")
创建代理
使用已部署的模型创建代理。
代理定义核心行为。 创建后,它可确保用户交互中的一致响应,而无需每次重复说明。 可以随时更新或删除代理。
Tip
代码使用 Foundry 项目(新)API(预览版), 并且与 Foundry 项目(经典)API 版本不兼容。 切换到 Foundry(经典)文档,以查看 Foundry 项目(经典版)API 版本 。
import os
from dotenv import load_dotenv
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import PromptAgentDefinition
load_dotenv()
project_client = AIProjectClient(
endpoint=os.environ["AZURE_AI_FOUNDRY_PROJECT_ENDPOINT"],
credential=DefaultAzureCredential(),
)
agent = project_client.agents.create_version(
agent_name=os.environ["AZURE_AI_FOUNDRY_AGENT_NAME"],
definition=PromptAgentDefinition(
model=os.environ["AZURE_AI_FOUNDRY_MODEL_DEPLOYMENT_NAME"],
instructions="You are a helpful assistant that answers general questions",
),
)
print(f"Agent created (id: {agent.id}, name: {agent.name}, version: {agent.version})")
与代理聊天
创建代理并与之聊天。
Tip
代码使用 Foundry 项目(经典)API ,并且与 Foundry 项目(新)API 不兼容(预览版)。 切换到 Foundry(新)文档以使用 Foundry 项目(新)API(预览版)。
用你的终结点替换此代码中的 endpoint:
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
from azure.ai.agents.models import ListSortOrder, FilePurpose
project = AIProjectClient(
endpoint="https://your-foundry-resource-name.ai.azure.com/api/projects/project-name",
credential=DefaultAzureCredential(),
)
agent = project.agents.create_agent(
model="gpt-4o",
name="my-agent",
instructions="You are a helpful writing assistant")
thread = project.agents.threads.create()
message = project.agents.messages.create(
thread_id=thread.id,
role="user",
content="Write me a poem about flowers")
run = project.agents.runs.create_and_process(thread_id=thread.id, agent_id=agent.id)
if run.status == "failed":
# Check if you got "Rate limit is exceeded.", then you want to get more quota
print(f"Run failed: {run.last_error}")
# Get messages from the thread
messages = project.agents.messages.list(thread_id=thread.id)
# Get the last message from the sender
messages = project.agents.messages.list(thread_id=thread.id, order=ListSortOrder.ASCENDING)
for message in messages:
if message.run_id == run.id and message.text_messages:
print(f"{message.role}: {message.text_messages[-1].text.value}")
# Delete the agent once done
project.agents.delete_agent(agent.id)
print("Deleted agent")
使用之前创建的名为“MyAgent”的代理,通过提问和相关的后续问题进行交互。 交互过程中会话会保留历史记录。
Tip
代码使用 Foundry 项目(新)API(预览版), 并且与 Foundry 项目(经典)API 版本不兼容。 切换到 Foundry(经典)文档,以查看 Foundry 项目(经典版)API 版本 。
import os
from dotenv import load_dotenv
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
load_dotenv()
project_client = AIProjectClient(
endpoint=os.environ["AZURE_AI_FOUNDRY_PROJECT_ENDPOINT"],
credential=DefaultAzureCredential(),
)
agent_name = os.environ["AZURE_AI_FOUNDRY_AGENT_NAME"]
openai_client = project_client.get_openai_client()
# Optional Step: Create a conversation to use with the agent
conversation = openai_client.conversations.create()
print(f"Created conversation (id: {conversation.id})")
# Chat with the agent to answer questions
response = openai_client.responses.create(
conversation=conversation.id, #Optional conversation context for multi-turn
extra_body={"agent": {"name": agent_name, "type": "agent_reference"}},
input="What is the size of France in square miles?",
)
print(f"Response output: {response.output_text}")
# Optional Step: Ask a follow-up question in the same conversation
response = openai_client.responses.create(
conversation=conversation.id,
extra_body={"agent": {"name": agent_name, "type": "agent_reference"}},
input="And what is the capital city?",
)
print(f"Response output: {response.output_text}")
将文件添加到代理
代理通过使用工具具有强大的能力。 让我们添加一个文件搜索工具,使我们可以进行知识检索。
- 下载 product_info_1.md 以提供给代理。
Tip
代码使用 Foundry 项目(经典)API ,并且与 Foundry 项目(新)API 不兼容(预览版)。 切换到 Foundry(新)文档以使用 Foundry 项目(新)API(预览版)。
用你的终结点替换此代码中的 endpoint:
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
from azure.ai.agents.models import ListSortOrder, FileSearchTool
project = AIProjectClient(
endpoint="https://your-foundry-resource-name.ai.azure.com/api/projects/project-name",
credential=DefaultAzureCredential(),
)
# Upload file and create vector store
file = project.agents.files.upload(file_path="./product_info_1.md", purpose=FilePurpose.AGENTS)
vector_store = project.agents.vector_stores.create_and_poll(file_ids=[file.id], name="my_vectorstore")
# Create file search tool and agent
file_search = FileSearchTool(vector_store_ids=[vector_store.id])
agent = project.agents.create_agent(
model="gpt-4o",
name="my-assistant",
instructions="You are a helpful assistant and can search information from uploaded files",
tools=file_search.definitions,
tool_resources=file_search.resources,
)
# Create thread and process user message
thread = project.agents.threads.create()
project.agents.messages.create(thread_id=thread.id, role="user", content="Hello, what Contoso products do you know?")
run = project.agents.runs.create_and_process(thread_id=thread.id, agent_id=agent.id)
# Handle run status
if run.status == "failed":
print(f"Run failed: {run.last_error}")
# Print thread messages
messages = project.agents.messages.list(thread_id=thread.id, order=ListSortOrder.ASCENDING)
for message in messages:
if message.run_id == run.id and message.text_messages:
print(f"{message.role}: {message.text_messages[-1].text.value}")
# Cleanup resources
project.agents.vector_stores.delete(vector_store.id)
project.agents.files.delete(file_id=file.id)
project.agents.delete_agent(agent.id)
清理资源
如果不再需要创建的任何资源,请删除与项目关联的资源组。
在 Microsoft Foundry 门户中,选择右上角的项目名称。 然后选择资源组的链接,在 Azure 门户中将其打开。 选择资源组,然后选择“ 删除”。 确认要删除资源组。
在 Azure 门户中,找到并选择资源组。 选择 “删除 ”并确认删除资源组及其所有关联的资源。