TypeScript 的 Azure OpenAI 連結庫 - 2.0.0
Azure OpenAI 服務 可讓您存取進階 AI 模型,以進行對話式、內容建立和數據基礎使用案例。 適用於 TypeScript 的 Azure OpenAI 連結庫隨附於適用於 JavaScript的官方
從第 1 版諮詢 @azure/openai 移轉⚠️
如需如何將應用程式程式代碼從 Azure OpenAI 用戶端連結庫 1.x 版更新至 openai
連結庫的詳細指示,請參閱 移轉指南。
主要連結:
開始
目前支持的環境
- LTS 版本的 Node.js
- 最新版的 Safari、Chrome、Edge 和 Firefox。
先決條件
如果您想要使用 Azure OpenAI 資源,您必須擁有 Azure 訂用帳戶,並 Azure OpenAI 存取。 如需詳細資訊,請參閱 快速入門:開始使用 Azure OpenAI Service產生文字。
同時安裝 openai
和 @azure/openai
使用 npm
安裝 Azure OpenAI 用戶端連結庫和適用於 JavaScript 的 OpenAI 連結庫:
npm install openai @azure/openai
建立和驗證 AzureOpenAI
有數種方式可以向 Azure OpenAI 服務進行驗證,而建議的方法是使用 Microsoft Entra ID,透過 Azure 身分識別連結庫進行安全、無密鑰驗證。 若要開始使用:
安裝 Azure 身分識別套件:
npm install @azure/identity
使用所需的認證類型呼叫
getBearerTokenProvider
,以建立令牌提供者。 例如,DefaultAzureCredential:import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity"; const credential = new DefaultAzureCredential(); const scope = "https://cognitiveservices.azure.com/.default"; const azureADTokenProvider = getBearerTokenProvider(credential, scope);
傳入權杖提供者以建立用戶端:
import { AzureOpenAI } from "openai"; const deployment = "Your deployment name"; const apiVersion = "2024-10-21"; const client = new AzureOpenAI({ azureADTokenProvider, deployment, apiVersion });
請遵循 如何使用 Microsoft Entra ID驗證設定 Azure OpenAI 服務中的指示,將 Azure OpenAI 資源的存取權授與信任實體。
重要概念
助理
請參閱 OpenAI 的 Assistants API 概觀。
音訊轉譯/翻譯和文字到語音轉換產生
請參閱 OpenAI 功能:語音轉換文字。
批
聊天完成
聊天模型會採用訊息清單作為輸入,並傳回模型產生的訊息作為輸出。 雖然聊天格式的設計目的是讓多回合對話變得容易,但對於不需要任何交談的單一回合工作也很有用。
請參閱 OpenAI 功能:聊天完成。
映射產生
請參閱 OpenAI 功能:映像產生。
檔
請參閱 OpenAI 的檔案 API 參考。
文字內嵌
請參閱 OpenAI 功能:內嵌。
例子
本節提供使用 Azure OpenAI 服務功能的範例。 如需其他範例,請參閱 samples 資料夾。
分析商務數據
此 TypeScript 範例會產生聊天回應,以輸入有關商務數據的聊天問題。 商務數據是透過 Azure 認知搜尋索引來提供。 若要深入瞭解如何將 Azure 認知搜尋索引設定為數據源,請參閱快速入門:使用您自己的數據與 Azure OpenAI 模型 聊天。
import { AzureOpenAI } from "openai";
import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity";
import "@azure/openai/types";
// Set AZURE_OPENAI_ENDPOINT to the endpoint of your
// Azure OpenAI resource. You can find this in the Azure portal.
import "dotenv/config";
// Your Azure Cognitive Search endpoint, and index name
const azureSearchEndpoint = process.env["AZURE_SEARCH_ENDPOINT"] || "<search endpoint>";
const azureSearchIndexName = process.env["AZURE_SEARCH_INDEX"] || "<search index>";
export async function main() {
console.log("== Azure On Your Data Sample ==");
const scope = "https://cognitiveservices.azure.com/.default";
const azureADTokenProvider = getBearerTokenProvider(new DefaultAzureCredential(), scope);
const deployment = "gpt-4-1106-preview";
const apiVersion = "2024-10-21";
const client = new AzureOpenAI({ azureADTokenProvider, deployment, apiVersion });
const events = await client.chat.completions.create({
stream: true,
messages: [
{
role: "user",
content:
"What's the most common feedback we received from our customers about the product?",
},
],
max_tokens: 128,
model: "",
data_sources: [
{
type: "azure_search",
parameters: {
endpoint: azureSearchEndpoint,
index_name: azureSearchIndexName,
authentication: {
type: "system_assigned_managed_identity",
},
},
},
],
});
for await (const event of events) {
for (const choice of event.choices) {
console.log(choice.delta?.content);
}
}
}
main();
內容篩選的聊天完成
Azure OpenAI 服務包含與核心模型搭配運作的內容篩選系統。 此系統會在輸入提示和輸出完成中,偵測並採取特定類別的潛在有害內容。 此範例示範如何存取這些內容篩選結果。
import { AzureOpenAI } from "openai";
import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity";
import "@azure/openai/types";
// Set AZURE_OPENAI_ENDPOINT to the endpoint of your
// OpenAI resource. You can find this in the Azure portal.
import "dotenv/config";
async function main() {
console.log("== Streaming Chat Completions Sample ==");
const scope = "https://cognitiveservices.azure.com/.default";
const azureADTokenProvider = getBearerTokenProvider(new DefaultAzureCredential(), scope);
const deployment = "gpt-35-turbo";
const apiVersion = "2024-10-21";
const client = new AzureOpenAI({ azureADTokenProvider, deployment, apiVersion });
const events = await client.chat.completions.create({
messages: [
{ role: "system", content: "You are a helpful assistant. You will talk like a pirate." },
{ role: "user", content: "Can you help me?" },
{ role: "assistant", content: "Arrrr! Of course, me hearty! What can I do for ye?" },
{ role: "user", content: "What's the best way to train a parrot?" },
],
model: "",
max_tokens: 128,
stream: true,
});
for await (const event of events) {
for (const choice of event.choices) {
console.log(`Chunk: ${choice.delta?.content}`);
const filterResults = choice.content_filter_results;
if (!filterResults) {
continue;
}
if (filterResults.error) {
console.log(
`\tContent filter ran into an error ${filterResults.error.code}: ${filterResults.error.message}`,
);
} else {
const { hate, sexual, selfHarm, violence } = filterResults;
console.log(
`\tHate category is filtered: ${hate?.filtered}, with ${hate?.severity} severity`,
);
console.log(
`\tSexual category is filtered: ${sexual?.filtered}, with ${sexual?.severity} severity`,
);
console.log(
`\tSelf-harm category is filtered: ${selfHarm?.filtered}, with ${selfHarm?.severity} severity`,
);
console.log(
`\tViolence category is filtered: ${violence?.filtered}, with ${violence?.severity} severity`,
);
}
}
}
}
main();
後續步驟
故障排除
請參閱適用於 JavaScript的官方
貢獻
如需建置、測試及參與此連結庫的詳細資訊,請參閱 OpenAI CONTRIBUTING.md。
此項目歡迎參與和建議。 大部分的捐款都要求您同意「參與者許可協定」(CLA),宣告您有權,而且實際上確實會授與我們使用您貢獻的許可權。 如需詳細資訊,請造訪 cla.microsoft.com。
當您提交提取要求時,CLA-Bot 會自動判斷您是否需要提供 CLA 並適當裝飾 PR(例如標籤、批註)。 只要遵循 Bot 所提供的指示即可。 您只需要使用我們的 CLA 在所有存放庫上執行此動作一次。
此專案已採用 Microsoft開放原始碼。 如需詳細資訊,請參閱 行為規範常見問題 或連絡 opencode@microsoft.com,以取得任何其他問題或意見。