5
0

OpenAI Deno SDKを試してみる🦕

Last updated at Posted at 2024-01-23

はじめに

OpenAI Deno SDKがリリースされたって!?
試してみるしかないでしょ…!
https://twitter.com/kt3k/status/1730482306559955249

ざっくり調べてみる

This is a build produced from https://github.com/openai/openai-node – please go there to read the source and docs, file issues, etc.

なるほど!nodeのライブラリからできたものなのね。

試してみた

以下を記述し実行!

import OpenAI from "https://deno.land/x/openai@v4.25.0/mod.ts";
import "dotenv";

const openai = new OpenAI({
  apiKey: Deno.env.get("OPENAI_API_KEY"),
});

async function main() {
  const chatCompletion = await openai.chat.completions.create({
    messages: [{ role: "user", content: "Denoの素晴らしい点をいくつか挙げて。" }],
    model: "gpt-4",
  });
  console.log(chatCompletion.choices[0]?.message?.content);
}

main();

返答

1. セキュリティ: Denoはデフォルトで安全を重視し、スクリプトはどんなネットワークアクセスも、ファイル、環境変数、さらには他のスクリプトへのアクセスを許可しません。

2. TypeScriptの組み込みサポート: DenoはTypeScriptを直接サポートしており、追加のツールなしで書き始めることができます。

3. 単一の実行可能ファイル: Denoはただ一つの実行可能ファイルであり、Node.js のような依存関係の問題はありません。

4. 組み込みの依存性検査とバンドラ: Denoには依存性を解決し、コードをバンドルする組み込みのツールがあります。

5. モジュールの取り扱い: Denoは、コードの依存性を管理するための新しい方法を導入しています。それはURLで参照されるESモジュールに基づいています。

6. パッケージマネージャーの不要性: Denoはnpmのようなパッケージマネージャーを必要とせず、依存性はURLまたはファイルパスで直接インポートされます。

7. top-level await: Denoでは、非同期操作を待つために明示的に関数をラップする必要はありません。

8. 標準ライブラリ: Denoは、Node.jsが長らく欠けていた広範な標準ライブラリを提供します。

試しにストリーミングも

~ 省略 ~

const encoder = new TextEncoder();

async function main() {
  const stream = await openai.chat.completions.create({
    model: "gpt-4",
    messages: [{ role: "user", content: "Denoの素晴らしい点をいくつか挙げて。" }],
    stream: true,
  });
  for await (const part of stream) {
    Deno.stdout.write(encoder.encode(part.choices[0]?.delta?.content || ""));
  }
  Deno.stdout.write(encoder.encode("\n"));
}

main();

いい感じですね~
g2l0HVQRxmlQdj5Q.png

おわりに

割と簡単に扱えて楽しいです🦕
もともとnodeのライブラリを使っている方はすぐ使いこなせるかもですね!
https://github.com/openai/openai-node

弊社開発課のXも是非フォローしてね🦕💨

5
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
5
0