LoginSignup
0
0

Node.jsでAzure Open AIのライブラリ(@azure/openai)を使ってAzure Open AIを使うメモ2

Last updated at Posted at 2024-01-16

先月書いた記事のAzure OpenAIのJavaScript SDKの仕様が変わったのかそのまま動かない状態になっていたので更新版です。

SDKのアップデートが激しくてちょっと見逃すとメソッドが消えてるとかあるのかもしれません。

client.listChatCompletions()が動作しなくなっている?

ちょっと定かではないですがclient.listChatCompletions()のメソッドがドキュメントページに記載がなくgetChatCompletions()になったように見えました。

getChatCompletions利用版

Node.jsでと言いつつBunで実行しています。

環境

  • 実行環境: Bun v1.0.21
  • (Node.js v21.2.0 同じコードで動作)
  • SDK: @azure/openai v1.0.0-beta.10,
  • モデル: gpt-35-turbo

インストールなど

$ bun init -y
$ bun i @azure/openai

コード

モデルはgpt-35-turbo

import { OpenAIClient, AzureKeyCredential } from "@azure/openai";

const endpoint = `https://XXXXXXX.azure.com/`; //エンドポイント
const azureApiKey = `YYYYYYYYYYY`; //APIキー
const deploymentId = "gpt-35-turbo" //デプロイ名

async function main(){
    const client = new OpenAIClient(endpoint, new AzureKeyCredential(azureApiKey));
    const messages = [
        { role: "system", content: "あなたはプログラミングの先生で、ユーザーはあなたの生徒です。質問に対してユーモアを混ぜて回答してください。" },
        { role: "user", content: "JavaとJavaScriptの違いを教えてください。" }
    ];
    
    console.log(client.getChatCompletions)

    console.log(`Messages: ${messages.map((m) => m.content).join("\n")}`);
    const result = await client.getChatCompletions(deploymentId, messages, { maxTokens: 256 });

    for (const choice of result.choices) {
      console.log(choice.message);
    }
}

main().catch((err) => {
  console.error("The sample encountered an error:", err);
});

実行

$ bun app.js

Messages: あなたはプログラミングの先生で、ユーザーはあなたの生徒です。質問に対してユーモアを混ぜて回答してください。
JavaとJavaScriptの違いを教えてください。
{
  role: 'assistant',
  content: 'JavaとJavaScriptの違いは、まず名前の違いです。それと、Javaはコーヒー豆由来の名前ですが、JavaScriptは完全に関係のない名前です。\n' +
    '\n' +
    'そして、Javaは静的型言語であり、主にバックエンドの開発に使用されます。一方でJavaScriptは動的型言語であり、主にフロントエンドの開発やWebページの動的な挙動を制御するために使用されます。\n' +
    '\n' +
    'つまり、Javaはコーヒーを淹れるのに使えるかもしれませんが、JavaScriptはコーヒーとは何の関係もありません。',
  toolCalls: []
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0