إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
مكتبة عملاء مشاريع الذكاء الاصطناعي (في حال المعاينة) هي جزء من حزمة تطوير تطوير التطبيقات Microsoft Foundry، وتوفر وصولا سهلا إلى الموارد في مشروع Microsoft Foundry الخاص بك. استخدمها في:
-
قم بإنشاء وتشغيل Agents باستخدام الخاصية
.agentsعلى العميل.
-
تعزيز العملاء بأدوات متخصصة:
- البحث عن ذاكرة الوكيل (معاينة)
- وكيل إلى وكيل (A2A) (معاينة)
- Azure AI Search
- البحث المخصص في بينج (معاينة)
- تأريض Bing
- أتمتة المتصفح (معاينة)
- مترجم شفرة
- استخدام الحاسوب (معاينة)
- البحث عن الملفات
- أداة الوظيفة
- إنشاء الصور
- Microsoft Fabric (معاينة)
- بروتوكول سياق النموذج (MCP)
- OpenAPI
- Microsoft SharePoint (معاينة)
- البحث على الويب (معاينة)
-
احصل على عميل OpenAI يستخدم هذه
.getOpenAIClient.الطريقة لتشغيل عمليات الردود، والمحادثات، والتقييمات، والضبط الدقيق مع وكيلك.
-
إدارة مخازن الذاكرة (المعاينة) لمحادثات الوكلاء، باستخدام العمليات
.beta.memoryStores. -
استكشف أدوات تقييم إضافية (بعضها في المعاينة) لتقييم أداء تطبيق الذكاء الاصطناعي التوليدي الخاص بك، باستخدام العمليات
.evaluationRules،.beta.evaluationTaxonomies، ،.beta.evaluators.beta.insights، و.beta.schedules. -
شغل مسوحات Red Team (معاينة) لتحديد المخاطر المرتبطة بتطبيق الذكاء الاصطناعي التوليدي الخاص بك، باستخدام العمليات
.beta.redTeams. - تهذيب نماذج الذكاء الاصطناعي على بياناتك.
-
تعداد نماذج الذكاء الاصطناعي المنشورة في مشروع المسبك الخاص بك باستخدام
.deploymentsالعمليات. -
تعداد الموارد Azure المتصلة في مشروع Foundry الخاص بك باستخدام عمليات
.connections. -
قم بتحميل المستندات وإنشاء مجموعات البيانات للرجوع إليها باستخدام
.datasetsالعمليات. -
قم بإنشاء فهارس البحث وتعدادها باستخدام العمليات
.indexes.
تستخدم مكتبة العميل إصدار v1واجهات برمجة تطبيقات REST لمستوى بيانات Microsoft Foundry.
وثائق المنتج | Samples | Package (npm) | API المرجع المستندي | SDK مصدر كود
جدول المحتويات
- بدء
- المفاهيم الرئيسية
- إنشاء العميل ومصادقته
- مجموعات عمليات المعاينة وأعلام الميزات الاختيارية
- أمثلة
- تتبع
-
Troubleshooting
- استثناءات
- مشاكل إعداد التقارير
- استثناءات
- الخطوات التالية
- المساهمة في
الشروع في العمل
المتطلب الأساسي
- <نسخ c0>LTS من Node.js
- اشتراك Azure.
- مشروع في Microsoft Foundry.
- رابط نقطة نهاية المشروع من النموذج
https://your-ai-services-account-name.services.ai.azure.com/api/projects/your-project-name. يمكنك العثور عليه في صفحة نظرة عامة على مشروع مايكروسوفت فاوندري الخاص بك. فيما يلي سنفترض أن متغيرAZURE_AI_PROJECT_ENDPOINTالبيئة تم تعريفه ليحمل هذه القيمة.
التفويض
- يتطلب الأمر معرف إنترا لمصادقة العميل. يحتاج التطبيق الخاص بك إلى كائن ينفذ واجهة
TokenCredential. نماذج الشيفرة هنا تستخدم DefaultAzureCredential. للحصول على هذا العمل، ستحتاج إلى: - تعيين دور مناسب. انظر التحكم في الوصول القائم على الأدوار في بوابة مايكروسوفت فاوندري. يمكن تنفيذ الدور المعين عبر تبويب "Access Control (IAM)" في مورد مشروع Azure AI الخاص بك في بوابة Azure.
- Azure CLI مثبت.
- أنت مسجل الدخول إلى حسابك Azure عبر تشغيل
az login. - لاحظ أنه إذا كان لديك عدة اشتراكات في Azure، يجب أن يكون الاشتراك الذي يحتوي على مورد مشروع Azure AI هو الاشتراك الافتراضي. قم بتشغيل
az account list --output tableلسرد جميع اشتراكاتك ومعرفة الاشتراك الافتراضي. قم بتشغيلaz account set --subscription "Your Subscription ID or Name"لتغيير اشتراكك الافتراضي.
تثبيت الحزمة
npm install @azure/ai-projects dotenv
المفاهيم الرئيسية
أنشئ ومصادقة العميل باستخدام معرف إنترا
معرف إنترا هو الطريقة الوحيدة للمصادقة التي يدعمها العميل في الوقت الحالي.
لإنشاء AIProjectsClient، يمكن جلب ملف projectEndpoint من projectEndpoint. أدناه سوف نفترض أن متغير AZURE_AI_PROJECT_ENDPOINT البيئة قد تم تعريفه للاحتفاظ بهذه القيمة:
import { AIProjectClient } from "@azure/ai-projects";
import { DefaultAzureCredential } from "@azure/identity";
const projectEndpoint = process.env["AZURE_AI_PROJECT_ENDPOINT"] || "<project endpoint string>";
project = new AIProjectClient(projectEndpoint, new DefaultAzureCredential());
مجموعات عمليات المعاينة وأعلام الميزات الاختيارية
بعض عمليات المعاينة foundryFeatures تتطلب وجود علامة اشتراك صريحة. على سبيل المثال:
await project.agents.createVersion(
"preview-agent",
{
kind: "workflow",
},
{ foundryFeatures: "WorkflowAgents=V1Preview" },
);
for await (const rule of project.evaluationRules.list()) {
console.log(rule.id);
}
تشمل .beta.memoryStoresمجموعات عمليات المعاينة ، .beta.evaluationTaxonomies، .beta.evaluators، .beta.insights، .beta.schedules، و .beta.redTeams.
الأمثلة
تنفيذ عمليات الاستجابات باستخدام عميل OpenAI
قد يحتوي مشروع Microsoft Foundry الخاص بك على نموذج أو أكثر من نماذج الذكاء الاصطناعي المنشورة. قد تكون هذه نماذج OpenAI، أو نماذج مايكروسوفت، أو نماذج من مزودين آخرين. استخدم الكود أدناه للحصول على OpenAI مصادق عليه من حزمة openai ، وقم بتنفيذ مكالمة إكمال الدردشة.
قم بتشغيل الكود أدناه. هنا نفترض deploymentName أن (str) محدد. إنه اسم النشر لنموذج الذكاء الاصطناعي في مشروع المسبك الخاص بك. كما هو موضح في علامة التبويب "النماذج + نقاط النهاية"، ضمن عمود "الاسم".
راجع مجلد "الإجابات" في <عينات c0>package للحصول على عينات إضافية، بما في ذلك الردود المتدفقة.
const openAIClient = project.getOpenAIClient();
const response = await openAIClient.responses.create({
model: deploymentName,
input: "What is the size of France in square miles?",
});
console.log("response = ", JSON.stringify(response, null, 2));
const detailResponse = await openAIClient.responses.create({
model: deploymentName,
input: "And what is the capital city?",
previous_response_id: response.id,
});
console.log("detailed response = ", JSON.stringify(detailResponse, null, 2));
تنفيذ عمليات الوكيل
.agents تمنحك الخاصية الموجودة على ملف AIProjectsClient الوصول إلى جميع عمليات الوكيل. يستخدم الوكلاء امتدادا لبروتوكول OpenAI Responses، لذلك ستحتاج على الأرجح إلى الحصول على OpenAI عميل للقيام بعمليات الوكيل، كما هو موضح في المثال أدناه.
const openAIClient = project.getOpenAIClient();
const agent = await project.agents.createVersion("my-agent-basic", {
kind: "prompt",
model: deploymentName,
instructions: "You are a helpful assistant that answers general questions",
});
console.log(`Agent created (id: ${agent.id}, name: ${agent.name}, version: ${agent.version})`);
const conversation = await openAIClient.conversations.create({
items: [
{ type: "message", role: "user", content: "What is the size of France in square miles?" },
],
});
console.log(`Created conversation with initial user message (id: ${conversation.id})`);
// Generate response using the agent
console.log("\nGenerating response...");
const response = await openAIClient.responses.create(
{
conversation: conversation.id,
},
{
body: { agent: { name: agent.name, type: "agent_reference" } },
},
);
console.log(`Response output: ${response.output_text}`);
// Add a second user message to the conversation
console.log("\nAdding a second user message to the conversation...");
await openAIClient.conversations.items.create(conversation.id, {
items: [{ type: "message", role: "user", content: "And what is the capital city?" }],
});
console.log("Added a second user message to the conversation");
// Generate second response
console.log("\nGenerating second response...");
const response2 = await openAIClient.responses.create(
{
conversation: conversation.id,
},
{
body: { agent: { name: agent.name, type: "agent_reference" } },
},
);
console.log(`Response output: ${response2.output_text}`);
// Clean up
console.log("\nCleaning up resources...");
await openAIClient.conversations.delete(conversation.id);
console.log("Conversation deleted");
await project.agents.deleteVersion(agent.name, agent.version);
console.log("Agent deleted");
استخدام أدوات الوكيل
يمكن تعزيز الوكلاء بأدوات متخصصة لقدرات متنوعة. يتم تنظيم الأدوات حسب متطلبات الاتصال الخاصة بها:
الأدوات المدمجة
تعمل هذه الأدوات فورا دون الحاجة إلى اتصالات خارجية.
مترجم شفرة
اكتب وشغل كود جافاسكريبت في بيئة مفتوحة، وأعالج الملفات وعمل مع تنسيقات بيانات متنوعة. توثيق OpenAI
const openAIClient = project.getOpenAIClient();
const response = await openAIClient.responses.create({
model: deploymentName,
input: "I need to solve the equation 3x + 11 = 14. Can you help me?",
tools: [{ type: "code_interpreter", container: { type: "auto" } }],
});
console.log(`Response output: ${response.output_text}`);
انظر الكود النموذجي الكامل في agentCodeInterpreter.ts.
البحث عن الملفات
أداة RAG مدمجة (Retrieval-Augmented Generation) لمعالجة والبحث في المستندات باستخدام مخازن متجهة لاسترجاع المعرفة. توثيق OpenAI
const openAIClient = project.getOpenAIClient();
const assetFilePath = path.join(
__dirname,
"..",
"samples-dev",
"agents",
"assets",
"product_info.txt",
);
const vectorStore = await openAIClient.vectorStores.create({
name: "ProductInfoStreamStore",
});
console.log(`Vector store created (id: ${vectorStore.id})`);
// Upload file to vector store
const fileStream = fs.createReadStream(assetFilePath);
const uploadedFile = await openAIClient.vectorStores.files.uploadAndPoll(
vectorStore.id,
fileStream,
);
console.log(`File uploaded to vector store (id: ${uploadedFile.id})`);
// Create agent with file search tool
const agent = await project.agents.createVersion("StreamingFileSearchAgent", {
kind: "prompt",
model: deploymentName,
instructions:
"You are a helpful assistant that can search through product information and provide detailed responses. Use the file search tool to find relevant information before answering.",
tools: [
{
type: "file_search",
vector_store_ids: [vectorStore.id],
},
],
});
console.log(`Agent created (id: ${agent.id}, name: ${agent.name}, version: ${agent.version})`);
انظر الكود النموذجي الكامل في agentFileSearchStream.ts.
توليد الصور
قم بإنشاء صور بناء على تعليمات نصية مع إعدادات دقة وجودة ونمط قابلة للتخصيص حسب الطلب:
const agent = await project.agents.createVersion("agent-image-generation", {
kind: "prompt",
model: deploymentName,
instructions: "Generate images based on user prompts",
tools: [
{
type: "image_generation",
quality: "low",
size: "1024x1024",
},
],
});
console.log(`Agent created (id: ${agent.id}, name: ${agent.name}, version: ${agent.version})`);
بعد الاتصال responses.create()، يمكنك تحميل الملف باستخدام الرد الوارد:
import { fileURLToPath } from "url";
const openAIClient = project.getOpenAIClient();
const agent = await project.agents.createVersion("agent-image-generation", {
kind: "prompt",
model: deploymentName,
instructions: "Generate images based on user prompts",
tools: [
{
type: "image_generation",
quality: "low",
size: "1024x1024",
},
],
});
console.log(`Agent created (id: ${agent.id}, name: ${agent.name}, version: ${agent.version})`);
const response = await openAIClient.responses.create(
{
input: "Generate an image of Microsoft logo.",
},
{
body: { agent: { name: agent.name, type: "agent_reference" } },
},
);
console.log(`Response created: ${response.id}`);
const imageData = response.output?.filter((output) => output.type === "image_generation_call");
if (imageData && imageData.length > 0 && imageData[0].result) {
console.log("Downloading generated image...");
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const filename = "microsoft.png";
const filePath = path.join(__dirname, filename);
// Decode base64 and save to file
const imageBuffer = Buffer.from(imageData[0].result, "base64");
fs.writeFileSync(filePath, imageBuffer);
console.log(`Image downloaded and saved to: ${path.resolve(filePath)}`);
} else {
console.log("No image data found in the response.");
}
البحث على الويب (معاينة)
قم بإجراء عمليات بحث عامة على الإنترنت لاسترجاع المعلومات الحالية من الإنترنت. توثيق OpenAI
const openAIClient = project.getOpenAIClient();
// Create Agent with web search tool
const agent = await project.agents.createVersion("agent-web-search", {
kind: "prompt",
model: deploymentName,
instructions: "You are a helpful assistant that can search the web",
tools: [
{
type: "web_search_preview",
user_location: {
type: "approximate",
country: "GB",
city: "London",
region: "London",
},
},
],
});
console.log(`Agent created (id: ${agent.id}, name: ${agent.name}, version: ${agent.version})`);
// Create a conversation for the agent interaction
const conversation = await openAIClient.conversations.create();
console.log(`Created conversation (id: ${conversation.id})`);
// Send a query to search the web
console.log("\nSending web search query...");
const response = await openAIClient.responses.create(
{
conversation: conversation.id,
input: "Show me the latest London Underground service updates",
},
{
body: { agent: { name: agent.name, type: "agent_reference" } },
},
);
console.log(`Response: ${response.output_text}`);
انظر الكود النموذجي الكامل في agentWebSearch.ts.
استخدام الحاسوب (معاينة)
تمكين الوكلاء من التفاعل المباشر مع أنظمة الحاسوب لأتمتة المهام وعمليات النظام:
const agent = await project.agents.createVersion("ComputerUseAgent", {
kind: "prompt" as const,
model: deploymentName,
instructions: `
You are a computer automation assistant.
Be direct and efficient. When you reach the search results page, read and describe the actual search result titles and descriptions you can see.
`.trim(),
tools: [
{
type: "computer_use_preview",
display_width: 1026,
display_height: 769,
environment: "windows" as const,
},
],
});
console.log(`Agent created (id: ${agent.id}, name: ${agent.name}, version: ${agent.version})`);
بعد الاستدعاء responses.create()، يعالج الاستجابة في حلقة تفاعل. تعامل computer_call مع العناصر المخرجة وقدم لقطات شاشة حسب computer_call_outputcomputer_screenshot الشكل لمواصلة التفاعل.
راجع الكود النموذجي الكامل في agentComputerUse.ts.
بروتوكول سياق النموذج (MCP)
دمج خوادم MCP لتوسيع قدرات الوكلاء باستخدام أدوات وموارد موحدة. توثيق OpenAI
const openAIClient = project.getOpenAIClient();
const agent = await project.agents.createVersion("agent-mcp", {
kind: "prompt",
model: deploymentName,
instructions:
"You are a helpful agent that can use MCP tools to assist users. Use the available MCP tools to answer questions and perform tasks.",
tools: [
{
type: "mcp",
server_label: "api-specs",
server_url: "https://gitmcp.io/Azure/azure-rest-api-specs",
require_approval: "always",
},
],
});
console.log(`Agent created (id: ${agent.id}, name: ${agent.name}, version: ${agent.version})`);
// Create a conversation thread to maintain context across multiple interactions
console.log("\nCreating conversation...");
const conversation = await openAIClient.conversations.create();
console.log(`Created conversation (id: ${conversation.id})`);
// Send initial request that will trigger the MCP tool to access Azure REST API specs
// This will generate an approval request since requireApproval="always"
console.log("\nSending request that will trigger MCP approval...");
const response = await openAIClient.responses.create(
{
conversation: conversation.id,
input: "Please summarize the Azure REST API specifications Readme",
},
{
body: { agent: { name: agent.name, type: "agent_reference" } },
},
);
بعد الاتصال responses.create()، تحقق من العناصر mcp_approval_request في مخرج الرد. أعد McpApprovalResponse مع قرارك الموافق للسماح للوكيل بمواصلة عمله.
انظر الكود النموذجي الكامل في agentMcp.ts.
OpenAPI
استدعاء واجهات برمجة التطبيقات الخارجية المعرفة بمواصفات OpenAPI دون الحاجة إلى كود إضافي على جانب العميل. توثيق OpenAI
const weatherSpecPath = path.resolve(__dirname, "../assets", "weather_openapi.json");
const agent = await project.agents.createVersion("MyOpenApiAgent", {
kind: "prompt",
model: deploymentName,
instructions:
"You are a helpful assistant that can call external APIs defined by OpenAPI specs to answer user questions. When calling the weather tool, always include the query parameter format=j1.",
tools: [
{
type: "openapi",
openapi: {
name: "get_weather",
description: "Retrieve weather information for a location using wttr.in",
spec: weatherSpecPath,
auth: { type: "anonymous" },
},
},
],
});
console.log(`Agent created (id: ${agent.id}, name: ${agent.name}, version: ${agent.version})`);
انظر الكود النموذجي الكامل في agentOpenApi.ts.
أداة الوظيفة
تعريف وظائف مخصصة تسمح للوكلاء بالتفاعل مع واجهات برمجة التطبيقات الخارجية، قواعد البيانات، أو منطق التطبيقات. توثيق OpenAI
/**
* Define a function tool for the model to use
*/
const funcTool = {
type: "function" as const,
function: {
name: "get_horoscope",
description: "Get today's horoscope for an astrological sign.",
strict: true,
parameters: {
type: "object",
properties: {
sign: {
type: "string",
description: "An astrological sign like Taurus or Aquarius",
},
},
required: ["sign"],
additional_properties: false,
},
},
};
const agent = await project.agents.createVersion("function-tool-agent", {
kind: "prompt",
model: deploymentName,
instructions: "You are a helpful assistant that can use function tools.",
tools: [funcTool],
});
console.log(`Agent created (id: ${agent.id}, name: ${agent.name}, version: ${agent.version})`);
بعد استدعاء responses.create()، قم بمعالجة function_call العناصر من مخرجات الاستجابة، ونفذ منطق الدالة باستخدام الوسيطات المقدمة، وأرسل FunctionCallOutput النتائج.
انظر الكود النموذجي الكامل في agentFunctionTool.ts.
- أداة البحث عن الذاكرة (المعاينة)
تضيف أداة تخزين الذاكرة ذاكرة إلى وكيل، مما يسمح لنموذج الذكاء الاصطناعي للوكيل بالبحث عن معلومات سابقة متعلقة بموجه المستخدم الحالي.
هذا embeddingModelDeployment هو اسم النموذج المستخدم لإنشاء تضمينات متجهية لتخزين والبحث في الذكريات.
const memoryStoreName = "AgentMemoryStore";
const embeddingModelDeployment =
process.env["AZURE_AI_EMBEDDING_MODEL_DEPLOYMENT_NAME"] || "<embedding model>";
const scope = "user_123";
const memoryStore = await project.beta.memoryStores.create(
memoryStoreName,
{
kind: "default",
chat_model: deploymentName,
embedding_model: embeddingModelDeployment,
options: {
user_profile_enabled: true,
chat_summary_enabled: true,
},
},
{
description: "Memory store for agent conversations",
},
);
console.log(
`Created memory store: ${memoryStore.name} (${memoryStore.id}) using chat model '${deploymentName}'`,
);
// Create an agent that will use the Memory Search tool
const agent = await project.agents.createVersion("MemorySearchAgent", {
kind: "prompt",
model: deploymentName,
instructions:
"You are a helpful assistant that remembers user preferences using the memory search tool.",
tools: [
{
type: "memory_search_preview",
memory_store_name: memoryStore.name,
scope,
update_delay: 1, // wait briefly after conversation inactivity before updating memories
},
],
});
انظر الكود النموذجي الكامل في agentMemorySearch.ts.
أدواتConnection-Based
تتطلب هذه الأدوات تكوين الاتصالات في مشروع الذكاء الاصطناعي Foundry الخاص بك وتستخدمه projectConnectionId.
Azure الذكاء الاصطناعي Search
التكامل مع فهارس Azure AI Search لقدرات قوية لاسترجاع المعرفة والبحث الدلالي:
const aiSearchConnectionId = process.env["AI_SEARCH_CONNECTION_ID"] || "";
const aiSearchIndexName = process.env["AI_SEARCH_INDEX_NAME"] || "";
const agent = await project.agents.createVersion("MyAISearchAgent", {
kind: "prompt",
model: deploymentName,
instructions:
"You are a helpful assistant. You must always provide citations for answers using the tool and render them as: `[message_idx:search_idx†source]`.",
tools: [
{
type: "azure_ai_search",
azure_ai_search: {
indexes: [
{
project_connection_id: aiSearchConnectionId,
index_name: aiSearchIndexName,
query_type: "simple",
},
],
},
},
],
});
console.log(`Agent created (id: ${agent.id}, name: ${agent.name}, version: ${agent.version})`);
انظر الكود النموذجي الكامل في agentAiSearch.ts.
التأريض في بينج
ردود الوكلاء الأرضية مع نتائج بحث ويب فورية من Bing لتوفير معلومات up-toبتاريخ التاريخ:
const bingProjectConnectionId = process.env["BING_GROUNDING_CONNECTION_ID"] || "";
const agent = await project.agents.createVersion("MyBingGroundingAgent", {
kind: "prompt",
model: deploymentName,
instructions: "You are a helpful assistant.",
tools: [
{
type: "bing_grounding",
bing_grounding: {
search_configurations: [
{
project_connection_id: bingProjectConnectionId,
},
],
},
},
],
});
console.log(`Agent created (id: ${agent.id}, name: ${agent.name}, version: ${agent.version})`);
انظر الكود النموذجي الكامل في agentBingGrounding.ts.
البحث المخصص في بينج (معاينة)
استخدم مثيلات بحث Bing المهيأة خصيصا لنتائج البحث الخاصة بالمجال أو المفلترة:
const bingCustomSearchProjectConnectionId = process.env["BING_CUSTOM_SEARCH_CONNECTION_ID"] || "";
const bingCustomSearchInstanceName = process.env["BING_CUSTOM_SEARCH_INSTANCE_NAME"] || "";
const agent = await project.agents.createVersion("MyAgent", {
kind: "prompt",
model: deploymentName,
instructions:
"You are a helpful agent that can use Bing Custom Search tools to assist users. Use the available Bing Custom Search tools to answer questions and perform tasks.",
tools: [
{
type: "bing_custom_search_preview",
bing_custom_search_preview: {
search_configurations: [
{
project_connection_id: bingCustomSearchProjectConnectionId,
instance_name: bingCustomSearchInstanceName,
},
],
},
},
],
});
console.log(`Agent created (id: ${agent.id}, name: ${agent.name}, version: ${agent.version})`);
انظر الكود النموذجي الكامل في agentBingCustomSearch.ts.
Microsoft Fabric (معاينة)
اتصل واستعلام Microsoft Fabric:
const fabricProjectConnectionId = process.env["FABRIC_PROJECT_CONNECTION_ID"] || "";
const agent = await project.agents.createVersion("MyFabricAgent", {
kind: "prompt",
model: deploymentName,
instructions: "You are a helpful assistant.",
tools: [
{
type: "fabric_dataagent_preview",
fabric_dataagent_preview: {
project_connections: [
{
project_connection_id: fabricProjectConnectionId,
},
],
},
},
],
});
console.log(`Agent created (id: ${agent.id}, name: ${agent.name}, version: ${agent.version})`);
انظر الكود النموذجي الكامل في agentFabric.ts.
Microsoft SharePoint (معاينة)
الوصول والبحث في مستندات SharePoint والقوائم والمواقع لدمج المعرفة المؤسسية:
const sharepointProjectConnectionId = process.env["SHAREPOINT_PROJECT_CONNECTION_ID"] || "";
const agent = await project.agents.createVersion("MyAgent", {
kind: "prompt",
model: deploymentName,
instructions:
"You are a helpful agent that can use SharePoint tools to assist users. Use the available SharePoint tools to answer questions and perform tasks.",
// Define SharePoint tool that searches SharePoint content
tools: [
{
type: "sharepoint_grounding_preview",
sharepoint_grounding_preview: {
project_connections: [
{
project_connection_id: sharepointProjectConnectionId,
},
],
},
},
],
});
console.log(`Agent created (id: ${agent.id}, name: ${agent.name}, version: ${agent.version})`);
انظر الكود النموذجي الكامل في agentSharepoint.ts.
أتمتة المتصفح (معاينة)
أتمتة تفاعلات المتصفح لجمع البيانات من الويب، والاختبار، والتفاعل مع تطبيقات الويب:
const browserAutomationProjectConnectionId = process.env["BROWSER_AUTOMATION_CONNECTION_ID"] || "";
const agent = await project.agents.createVersion("MyAgent", {
kind: "prompt",
model: deploymentName,
instructions: `You are an Agent helping with browser automation tasks.
You can answer questions, provide information, and assist with various tasks
related to web browsing using the Browser Automation tool available to you.`,
// Define Browser Automation tool
tools: [
{
type: "browser_automation_preview",
browser_automation_preview: {
connection: {
project_connection_id: browserAutomationProjectConnectionId,
},
},
},
],
});
console.log(`Agent created (id: ${agent.id}, name: ${agent.name}, version: ${agent.version})`);
انظر الكود النموذجي الكامل في agentBrowserAutomation.ts.
MCP مع مشروع الاتصال
تكامل MCP باستخدام الاتصالات الخاصة بالمشروع للوصول إلى خوادم MCP المتصلة:
const mcpProjectConnectionId = process.env["MCP_PROJECT_CONNECTION_ID"] || "";
const agent = await project.agents.createVersion("agent-mcp-connection-auth", {
kind: "prompt",
model: deploymentName,
instructions: "Use MCP tools as needed",
tools: [
{
type: "mcp",
server_label: "api-specs",
server_url: "https://api.githubcopilot.com/mcp",
require_approval: "always",
project_connection_id: mcpProjectConnectionId,
},
],
});
console.log(`Agent created (id: ${agent.id}, name: ${agent.name}, version: ${agent.version})`);
انظر الكود النموذجي الكامل في agentMcpConnectionAuth.ts.
وكيل إلى وكيل (A2A) (معاينة)
تمكين التعاون متعدد الوكلاء حيث يمكن للوكلاء التواصل وتفويض المهام إلى وكلاء متخصصين آخرين:
const a2aProjectConnectionId = process.env["A2A_PROJECT_CONNECTION_ID"] || "";
const agent = await project.agents.createVersion("MyA2AAgent", {
kind: "prompt",
model: deploymentName,
instructions: "You are a helpful assistant.",
// Define A2A tool for agent-to-agent communication
tools: [
{
type: "a2a_preview",
project_connection_id: a2aProjectConnectionId,
},
],
});
console.log(`Agent created (id: ${agent.id}, name: ${agent.name}, version: ${agent.version})`);
انظر الكود النموذجي الكامل في agentAgentToAgent.ts.
OpenAPI مع Project Connection
استدعاء واجهات برمجة التطبيقات الخارجية المعرفة بمواصفات OpenAPI باستخدام مصادقة اتصال المشروع:
const tripAdvisorProjectConnectionId = process.env["TRIPADVISOR_PROJECT_CONNECTION_ID"] || "";
function loadOpenApiSpec(specPath: string): unknown {
if (!fs.existsSync(specPath)) {
throw new Error(`OpenAPI specification not found at: ${specPath}`);
}
try {
const data = fs.readFileSync(specPath, "utf-8");
return JSON.parse(data);
} catch (error) {
throw new Error(`Failed to read or parse OpenAPI specification at ${specPath}: ${error}`);
}
}
const tripAdvisorSpecPath = path.resolve(__dirname, "../assets", "tripadvisor_openapi.json");
const tripAdvisorSpec = loadOpenApiSpec(tripAdvisorSpecPath);
const agent = await project.agents.createVersion("MyOpenApiConnectionAgent", {
kind: "prompt",
model: deploymentName,
instructions:
"You are a travel assistant that consults the TripAdvisor Content API via project connection to answer user questions about locations.",
tools: [
{
type: "openapi",
openapi: {
name: "get_tripadvisor_location_details",
description:
"Fetch TripAdvisor location details, reviews, or photos using the Content API via project connection auth.",
spec: tripAdvisorSpec,
auth: {
type: "project_connection",
security_scheme: {
project_connection_id: tripAdvisorProjectConnectionId,
},
},
},
},
],
});
console.log(`Agent created (id: ${agent.id}, name: ${agent.name}, version: ${agent.version})`);
انظر الكود النموذجي الكامل في agentOpenApiConnectionAuth.ts.
للحصول على أمثلة كاملة لجميع الأدوات، راجع <دليل c0>samples-dev.
التقييم
يوفر التقييم في مكتبة عملاء مشروع Azure AI مقاييس كمية للجودة والسلامة بمساعدة الذكاء الاصطناعي لتقييم الأداء وتقييم نماذج نماذج اللغة الكبيرة وتطبيقات الذكاء الاصطناعي التوليد والوكلاء. تعرف المقاييس بأنها مقيمون. يمكن للمقيمين المدمجين أو المخصصين تقديم رؤى تقييم شاملة.
الكود أدناه يوضح بعض عمليات التقييم. يمكن العثور على القائمة الكاملة للعينات تحت مجلد "التقييمات" في <عينات الحزمة>
const openAIClient = project.getOpenAIClient();
const dataSourceConfig = {
type: "custom" as const,
item_schema: {
type: "object",
properties: { query: { type: "string" } },
required: ["query"],
},
include_sample_schema: true,
};
const evalObject = await openAIClient.evals.create({
name: "Agent Evaluation",
data_source_config: dataSourceConfig,
testing_criteria: [
{
type: "azure_ai_evaluator",
name: "violence_detection",
evaluator_name: "builtin.violence",
data_mapping: { query: "{{item.query}}", response: "{{item.response}}" },
} as any,
],
});
console.log(`Evaluation created (id: ${evalObject.id}, name: ${evalObject.name})`);
انظر الكود النموذجي الكامل في agentEvaluation.ts.
عمليات النشر
يوضح الرمز أدناه بعض عمليات النشر، والتي تسمح لك بتعداد نماذج الذكاء الاصطناعي المنشورة في مشاريع Microsoft Foundry الخاصة بك. يمكن رؤية هذه النماذج في علامة التبويب "النماذج + نقاط النهاية" في مشروع Microsoft Foundry. يمكن العثور على العينات الكاملة تحت مجلد "النشر" في <عينات الحزمة c0>.
import { ModelDeployment } from "@azure/ai-projects";
const modelPublisher = process.env["MODEL_PUBLISHER"] || "<model publisher>";
console.log("List all deployments:");
const deployments: ModelDeployment[] = [];
const properties: Array<Record<string, string>> = [];
for await (const deployment of project.deployments.list()) {
// Check if this is a ModelDeployment (has the required properties)
if (
deployment.type === "ModelDeployment" &&
"modelName" in deployment &&
"modelPublisher" in deployment &&
"modelVersion" in deployment
) {
deployments.push(deployment);
properties.push({
name: deployment.name,
modelPublisher: deployment.modelPublisher,
modelName: deployment.modelName,
});
}
}
console.log(`Retrieved deployments: ${JSON.stringify(properties, null, 2)}`);
// List all deployments by a specific model publisher (assuming we have one from the list)
console.log(`List all deployments by the model publisher '${modelPublisher}':`);
const filteredDeployments: ModelDeployment[] = [];
for await (const deployment of project.deployments.list({
modelPublisher,
})) {
// Check if this is a ModelDeployment
if (
deployment.type === "ModelDeployment" &&
"modelName" in deployment &&
"modelPublisher" in deployment &&
"modelVersion" in deployment
) {
filteredDeployments.push(deployment);
}
}
console.log(
`Retrieved ${filteredDeployments.length} deployments from model publisher '${modelPublisher}'`,
);
// Get a single deployment by name
if (deployments.length > 0) {
const deploymentName = deployments[0].name;
console.log(`Get a single deployment named '${deploymentName}':`);
const singleDeployment = await project.deployments.get(deploymentName);
console.log(`Retrieved deployment: ${JSON.stringify(singleDeployment, null, 2)}`);
}
عمليات التوصيلات
الكود أدناه يوضح بعض عمليات الاتصال، والتي تتيح لك تعداد موارد Azure المتصلة بمشاريع Microsoft Foundry الخاصة بك. يمكن رؤية هذه الاتصالات في "مركز الإدارة" ، في علامة التبويب "الموارد المتصلة" في مشروع Microsoft Foundry. يمكن العثور على العينات الكاملة تحت مجلد "الاتصالات" في <عينات العبوة c0>package.
import { Connection } from "@azure/ai-projects";
// List the details of all the connections
const connections: Connection[] = [];
const connectionNames: string[] = [];
for await (const connection of project.connections.list()) {
connections.push(connection);
connectionNames.push(connection.name);
}
console.log(`Retrieved connections: ${connectionNames}`);
// Get the details of a connection, without credentials
const connectionName = connections[0].name;
const connection = await project.connections.get(connectionName);
console.log(`Retrieved connection ${JSON.stringify(connection, null, 2)}`);
const connectionWithCredentials = await project.connections.getWithCredentials(connectionName);
console.log(
`Retrieved connection with credentials ${JSON.stringify(connectionWithCredentials, null, 2)}`,
);
// List all connections of a specific type
const azureAIConnections: Connection[] = [];
for await (const azureOpenAIConnection of project.connections.list({
connectionType: "AzureOpenAI",
defaultConnection: true,
})) {
azureAIConnections.push(azureOpenAIConnection);
}
console.log(`Retrieved ${azureAIConnections.length} Azure OpenAI connections`);
// Get the details of a default connection
const defaultConnection = await project.connections.getDefault("AzureOpenAI", {
includeCredentials: true,
});
console.log(`Retrieved default connection ${JSON.stringify(defaultConnection, null, 2)}`);
عمليات مجموعة البيانات
توضح التعليمات البرمجية أدناه بعض عمليات مجموعة البيانات. يمكن العثور على العينات الكاملة تحت مجلد "مجموعات البيانات" في <عينات الحزمة>.
import { DatasetVersionUnion } from "@azure/ai-projects";
const VERSION1 = "1.0";
const VERSION2 = "2.0";
const VERSION3 = "3.0";
// sample files to use in the demonstration
const sampleFolder = "sample_folder";
// Create a unique dataset name for this sample run
const datasetName = `sample-dataset-basic`;
console.log("Upload a single file and create a new Dataset to reference the file.");
console.log("Here we explicitly specify the dataset version.");
const dataset1 = await project.datasets.uploadFile(
datasetName,
VERSION1,
path.join(__dirname, sampleFolder, "sample_file1.txt"),
);
console.log("Dataset1 created:", JSON.stringify(dataset1, null, 2));
const credential = project.datasets.getCredentials(dataset1.name, dataset1.version, {});
console.log("Credential for the dataset:", credential);
console.log(
"Upload all files in a folder (including subfolders) to the existing Dataset to reference the folder.",
);
console.log("Here again we explicitly specify a new dataset version");
const dataset2 = await project.datasets.uploadFolder(
datasetName,
VERSION2,
path.join(__dirname, sampleFolder),
);
console.log("Dataset2 created:", JSON.stringify(dataset2, null, 2));
console.log(
"Upload a single file to the existing dataset, while letting the service increment the version",
);
const dataset3 = await project.datasets.uploadFile(
datasetName,
VERSION3,
path.join(__dirname, sampleFolder, "sample_file2.txt"),
);
console.log("Dataset3 created:", JSON.stringify(dataset3, null, 2));
console.log("Get an existing Dataset version `1`:");
const datasetVersion1 = await project.datasets.get(datasetName, VERSION1);
console.log("Dataset version 1:", JSON.stringify(datasetVersion1, null, 2));
console.log(`Listing all versions of the Dataset named '${datasetName}':`);
const datasetVersions = project.datasets.listVersions(datasetName);
for await (const version of datasetVersions) {
console.log("List versions:", version);
}
console.log("List latest versions of all Datasets:");
const latestDatasets = project.datasets.list();
for await (const dataset of latestDatasets) {
console.log("List datasets:", dataset);
}
// List the details of all the datasets
const datasets = project.datasets.listVersions(datasetName);
const allDatasets: DatasetVersionUnion[] = [];
for await (const dataset of datasets) {
allDatasets.push(dataset);
}
console.log(`Retrieved ${allDatasets.length} datasets`);
console.log("Delete all Datasets created above:");
await project.datasets.delete(datasetName, VERSION1);
await project.datasets.delete(datasetName, VERSION2);
await project.datasets.delete(datasetName, dataset3.version);
console.log("All specified Datasets have been deleted.");
عمليات الملفات
يوضح الكود أدناه بعض عمليات الملفات باستخدام عميل OpenAI ، والتي تتيح لك تحميل الملفات واستردادها وإدراجها وحذفها. هذه العمليات مفيدة للعمل مع الملفات التي يمكن استخدامها للضبط الدقيق وعمليات نموذج الذكاء الاصطناعي الأخرى. يمكن العثور على العينات الكاملة تحت مجلد "الملفات" في <>عينات الحزمة.
const openAIClient = project.getOpenAIClient();
console.log("Uploading file");
const created = await openAIClient.files.create({
file: fs.createReadStream(filePath),
purpose: "fine-tune",
});
console.log(`Uploaded file with ID: ${created.id}`);
const uploadedFile = await openAIClient.files.retrieve(created.id);
console.log("Processed file metadata:\n", JSON.stringify(uploadedFile, null, 2));
console.log(`Retrieving file content with ID: ${uploadedFile.id}`);
const contentResponse = await openAIClient.files.content(uploadedFile.id);
const buf = Buffer.from(await contentResponse.arrayBuffer());
console.log(buf.toString("utf-8"));
// 4) List all files
console.log("Listing all files:");
const filesList = await openAIClient.files.list();
for (const f of filesList.data ?? []) {
console.log(JSON.stringify(f));
}
// 5) Delete the file
console.log(`Deleting file with ID: ${uploadedFile.id}`);
const deleted = await openAIClient.files.delete(uploadedFile.id);
console.log(
`Successfully deleted file: ${deleted?.id || uploadedFile.id}, deleted=${String(deleted?.deleted ?? true)}`,
);
عمليات الفهارس
يوضح الكود أدناه بعض عمليات الفهارس. يمكن العثور على العينات الكاملة تحت مجلد "الفهارس" في package samples.
import { AzureAISearchIndex } from "@azure/ai-projects";
const indexName = "sample-index";
const version = "1";
const azureAIConnectionConfig: AzureAISearchIndex = {
name: indexName,
type: "AzureSearch",
version,
indexName,
connectionName: "sample-connection",
};
// Create a new Index
const newIndex = await project.indexes.createOrUpdate(indexName, version, azureAIConnectionConfig);
console.log("Created a new Index:", newIndex);
console.log(`Get an existing Index version '${version}':`);
const index = await project.indexes.get(indexName, version);
console.log(index);
console.log(`Listing all versions of the Index named '${indexName}':`);
const indexVersions = project.indexes.listVersions(indexName);
for await (const indexVersion of indexVersions) {
console.log(indexVersion);
}
console.log("List all Indexes:");
const allIndexes = project.indexes.list();
for await (const i of allIndexes) {
console.log("Index:", i);
}
console.log("Delete the Index versions created above:");
await project.indexes.delete(indexName, version);
عمليات الضبط الدقيق
الكود أدناه يوضح كيفية إنشاء وظائف الضبط الدقيق باستخدام عميل OpenAI. تدعم هذه العمليات تقنيات ضبط دقيقة متنوعة مثل Fine-Tuning المراقبة (SFT)، Fine-Tuning التعزيز (RFT)، وتحسين الأداء المباشر (DPO). يمكن العثور على العينات الكاملة تحت مجلد "finetuning" في ><عينات الحزمة .
import { JobCreateParams } from "openai/resources/fine-tuning/jobs";
const trainingFilePath = "training_data_path.jsonl";
const validationFilePath = "validation_data_path.jsonl";
const openAIClient = project.getOpenAIClient();
// 1) Create the training and validation files
const trainingFile = await openAIClient.files.create({
file: fs.createReadStream(trainingFilePath),
purpose: "fine-tune",
});
console.log(`Uploaded file with ID: ${trainingFile.id}`);
const validationFile = await openAIClient.files.create({
file: fs.createReadStream(validationFilePath),
purpose: "fine-tune",
});
console.log(`Uploaded file with ID: ${validationFile.id}`);
// 2) Wait for the files to be processed
await openAIClient.files.waitForProcessing(trainingFile.id);
await openAIClient.files.waitForProcessing(validationFile.id);
console.log("Files processed.");
// 3) Create a supervised fine-tuning job
const fineTuningJob = await openAIClient.fineTuning.jobs.create({} as JobCreateParams, {
body: {
trainingType: "Standard",
training_file: trainingFile.id,
validation_file: validationFile.id,
model: deploymentName,
method: {
type: "supervised",
supervised: {
hyperparameters: {
n_epochs: 3,
batch_size: 1,
learning_rate_multiplier: 1.0,
},
},
},
},
});
console.log("Created fine-tuning job:\n", JSON.stringify(fineTuningJob));
تتبع
ملاحظه: وظيفة التتبع في المعاينة الأولية وعرضة للتغيير. قد يتم تعديل الامتدادات والسمات والأحداث في الإصدارات المستقبلية.
يمكنك إضافة مورد Application Insights Azure إلى مشروع Microsoft Foundry الخاص بك. راجع علامة التبويب التتبع في مشروع Microsoft Foundry. إذا كان أحدها مفعلا، يمكنك الحصول على سلسلة connection string الخاصة ب Application Insights وتكوين عميل AI Projects الخاص بك، ومراقبة مسار التنفيذ الكامل عبر Azure Monitor. عادة، قد ترغب في بدء التتبع قبل إنشاء عميل أو عامل.
التثبيت
npm install @azure/monitor-opentelemetry@^1.14.2 @opentelemetry/api@^1.9.0
كيفية تمكين التتبع
إليك عينة كود توضح كيفية تفعيل تتبع Azure Monitor:
import { AzureMonitorOpenTelemetryOptions, useAzureMonitor } from "@azure/monitor-opentelemetry";
const TELEMETRY_CONNECTION_STRING = process.env["TELEMETRY_CONNECTION_STRING"];
const options: AzureMonitorOpenTelemetryOptions = {
azureMonitorExporterOptions: {
connectionString: TELEMETRY_CONNECTION_STRING,
},
};
useAzureMonitor(options);
انظر الكود النموذجي الكامل في remoteTelemetry.ts.
Troubleshooting
الاستثناءات
تؤدي أساليب العميل التي تجري استدعاءات الخدمة إلى رفع code الاستثناء برمز حالة استجابة HTTP. يحتوي error.message الاستثناء على رسالة مفصلة قد تكون مفيدة في تشخيص المشكلة:
import { isRestError } from "@azure/core-rest-pipeline";
try {
const result = await project.connections.list();
} catch (e) {
if (isRestError(e)) {
console.log(`Status code: ${e.code}`);
console.log(e.message);
} else {
console.error(e);
}
}
على سبيل المثال، عند توفير بيانات اعتماد خاطئة:
Status code: 401 (Unauthorized)
Operation returned an invalid status 'Unauthorized'
مشاكل إعداد التقارير
للإبلاغ عن مشاكل في مكتبة العميل، أو طلب ميزات إضافية، يرجى فتح عدد GitHub here
الخطوات التالية
اطلع على مجلد package samples، الذي يحتوي على كود قابل للتشغيل بالكامل.
المساهمة في
يرحب هذا المشروع بالمساهمات والاقتراحات. تتطلب معظم المساهمات منك الموافقة على اتفاقية ترخيص المساهمين (CLA) التي تعلن أن لديك الحق في منحنا حقوق استخدام مساهمتك. لمزيد من التفاصيل، تفضل بزيارة https://cla.microsoft.com.
عند إرسال طلب سحب، سيحدد روبوت CLA تلقائيا ما إذا كنت بحاجة إلى توفير CLA وتزيين طلب السحب بشكل مناسب (على سبيل المثال، التسمية، التعليق). ما عليك سوى اتباع الإرشادات التي يوفرها الروبوت. ستحتاج فقط إلى القيام بذلك مرة واحدة عبر جميع المستودعات باستخدام CLA لدينا.
اعتمد هذا المشروع قواعد السلوك مفتوحة المصدر من Microsoft. لمزيد من المعلومات، راجع الأسئلة المتداولة حول قواعد السلوك أو الاتصال opencode@microsoft.com مع أي أسئلة أو تعليقات إضافية.
Azure SDK for JavaScript