OpenAI と IRIS の統合
皆さんもご存知のように、人工知能の世界はもう生活の中に存在しており、誰もが利用従っています。
多数のプラットフォームが、無料、サブスクリプション、または非公開の形式で、人工知能サービスを提供していますが、 コンピューティングの世界で「話題」となったことから、特に注目されているサービスは OpenAI です。最も有名な ChatGPT および DALL-E が主な原因と言えます。
https://thegradient.pub/gpt2-and-the-nature-of-intelligence/
ここで、明白に進化をみることができます! GPT-3(2020 年)は、達成したいことを示した十分な入力を使ってトレーニングする必要がありましたが、現行の GPT-4 バージョンでは自然言語を使用することができるため、入力をより簡単に提供することができます。 これで、命令の意図を理解するだけでなく、それ自体が話している内容を理解している「ように見えます」。
現在は、Gary Marcus が 2020 年に GPT-2 用に作成した同じ例を使用した場合、期待どおりの結果を得られます。
OpenAI は現在、驚くほどの速さで大幅に進化した一連のツールを提供しており、適切に組み合わせれば、以前よりも効率的な結果をはるかに簡単に得ることができます。
OpenAI が提供する製品
最もよく知られた 2 つの製品について話したいと思います。DALL-E と ChatGPT です。 ただし、OpenAI には他にも、音声をテキストに書き起こし、別の言語への翻訳も行える Whisper や、検索、推奨、グループ化などの操作においてテキスト文字列の関係を測定できる Embeddings などのサービスも提供しています。
これらのサービスを使用するために必要なもの
OpenAI アカウントの作成が必要です。作成方法は非常に簡単であり、作成すれば、直接 OpenAI のウェブサイトを通じてサービスを使用できるようになります。
Chat: https://chat.openai.com
DALL-E: https://labs.openai.com
これらのサービスを IRIS から統合するので、その API を使用してアクセスする必要があります。 まず、アカウントを作成し、API を使用できるように支払方法を指定する必要があります。 費用は比較的低いですが、使用内容によってことなります。 トークンを多く消費するほど、費用が高くなります 😉
トークンとは?
モデルがテキストを理解して処理するために使用する手段です。 トークンは語または単なる文字の断片です。 たとえば、「hamburger」という語は、「ham」、「bur」、「ger」というタイルに分離されるのに対し、「pear」のような短い語は 1 つのタイルになります。 多くのトークンは「 hello」や「 bye」のように空のスペースで始まります。
API の使用は複雑ですか?
まったく複雑ではありません。 以下の手順に従えば、問題はありません。
ステップ 1: API キーの作成
ユーザーのメニューにある「View API Key」オプションを選択します。
ステップ 2: 新しいシークレットキーの作成
API Keys のセクションの下にあるボタンを押します。
非常に重要: シークレットキーが作成されると、どのような場合でも復元はできないため、安全な場所に情報を保存してください。
ステップ 3: 組織の名前の定義
組織の定義は必須ではありませんが、推奨されます。 API 呼び出しのヘッダーの一部となります。 また、組織のコードを後で使用できるようにコピーしておく必要もあります。
これは、必要に応じて何度でも変更できます。

ステップ 4: シークレットキーと組織 ID による API 呼び出しの準備
API 呼び出しの一部として、ベアラートークン認証ヘッダーを使用し、シークレットキーを指定する必要があります。
組織 ID の横にヘッダーパラメーターとして指定されていることも必要です。
| ヘッダーパラメーター | 値 |
| api-key | sk-MyPersonalSecretKey12345 |
| OpenAI-Organization | org-123ABCFakeId |
以下は呼び出しの例です。
POST https://api.openai.com/v1/images/create
header 'Authorization: Bearer sk-MyPersonalSecretKey12345'
header 'api-key: sk-MyPersonalSecretKey12345'
header 'OpenAI-Organization: org-123ABCFakeId '
header 'Content-Type: application/json'
この構成はすべてのエンドポイントに共通であるため、最もよく知られたメソッドがどのように機能するか見てみましょう。
Models
エンドポイント: GET https://api.openai.com/v1/models
OpenAI が使用できるように定義したすべてのモデルをダウンロードできます。 ただし、モデルごとに特徴が異なります。 Chat で使用する最新のモデルは「gpt-4」です。 すべてのモデルの ID は小文字表記であることに注意してください。
モデル名が指定されていない場合は、既存のモデルがすべて返されます。
機能と使用場所は、OpenAI ドキュメントページ(https://platform.openai.com/docs/models/overview)をご覧ください。
Chat
エンドポイント: POST https://api.openai.com/v1/chat/completions
指定されたモデルを使って、または通知を介して、会話を作成できます。 最大いくつのトークンを使用するのか、会話をいつ止めるのかを指定できます。
入力パラメーターは以下のようになります。
- model: 必須。 これは、使用するモデルの ID です。 ListModels API を使用すると、使用できるモデルをすべて確認したり、モデルの概要で説明を確認したりできます。
- messages: 必須。 どの役割を使用するかを示したメッセージのタイプを含みます。 ユーザーであるかアシスタントであるかを指定して、ダイアログフォームを定義できます。
- role: メッセージの人のロールです。
- content: メッセージのコンテンツです。
- temperature: オプション。 示される温度を 0~2 の値で示します。 数値が高いほど、よりランダムな結果になります。 数値が低いほど、回答はより集中的で確定的になります。 定義されていない場合、デフォルト値は 1 です。
- stop: オプション。 API がトークンを生成しなくなるシーケンスに関連しています。 「none」が指定されている場合、トークンは無限に生成されます。
- max_tokens: オプション。 コンテンツを生成するトークンの最大数を指定し、モデルが許可する最大トークン数に制限されます。
このメソッドを説明するドキュメントは、以下のリンクをご覧ください: https://platform.openai.com/docs/api-reference/chat/create
Image
エンドポイント: POST https://api.openai.com/v1/images/generations
プロンプトパラメーターで指定されたとおりに画像を作成できます。 また、結果のサイズと、リンクまたは Base64 のコンテンツのどちらの戻し方を希望するかを定義できます。
入力パラメーターは以下のようになります。
- message: 必須。 生成する画像を説明するテキストに関連しています。
- n: オプション。 生成する画像の最大数に関連しています。 これは 1~10 の値です。 指定されていない場合、デフォルト値は 1 です。
- size: オプション。 生成される画像のサイズに関連しています。 値は "256x256"、"512x512"、または "1024x1024" です。 指定されていない場合、デフォルト値は "1024x1024" です。
- response_format: オプション。 生成された画像を戻す際の形式に関連しています。 値は "url" または "b64_json" です。 指定されていない場合、デフォルト値は "url" です。
このメソッドを説明するドキュメントは、以下のリンクをご覧ください: https://platform.openai.com/docs/api-reference/images/create
iris-openai とは?
リンク: https://openexchange.intersystems.com/package/iris-openai
このフレームワークは、必要なプロパティを含むリクエストおよびレスポンスメッセージを使用して OpenAI に接続し、Chat、Models、Images などのメソッドを使用できるように設計されています。
本番環境は、メッセージングクラスを使用して、OpenAI API に接続するビジネスオペレーションを呼び出せるように構成できます。
前述のとおり、シークレットキーと組織 ID の値を指定して本番環境を構成する必要があることに注意してください。
画像を作成する場合、クラスインスタンス "St.OpenAi.Msg.Images.ImagesRequest" を生成して、新しい写真を作成するためのオプションの値を入力する必要があります。
例:
Set image=##class(St.OpenAi.Msg.Images.ImagesRequest).%New()
Set image.Operation = "generations"
Set image.Prompt = "Two cats with a hat reading a comic"
Set image.NumOfImages = 2
完了したら、"St.OpenAi.BO.Api.Connect" ビジネスオペレーションを呼び出します。
注意: この場合、作成された 2 つの画像のリンクが取得されます。
{
"created": 1683482604,
"data": [
{
"url": "https://link_of_image_01.png”
},
{
"url": "https://link_of_image_02.png”
}
]
}
リンクではなく Base64 を操作すると指定されている場合、以下のメッセージが取得されます。
{
"created": 1683482604,
"data": [
{
"b64_json": "iVBORw0KGgoAAAANSUhEUgAABAAAAAQACAIAAADwf7zUAAAAaGVYSWZNTQAqAAAACAACknwAAgAAACkAAAAmkoYAAgAAABgAAABQAAAAAE9wZW5BSS0tZjM5NTgwMmMzNTZiZjNkMDFjMzczOGM2OTAxYWJiNzUAAE1hZGUgd2l0aCBPcGVuQUkgREFMTC1FAAjcEcwAAQAASURBVHgBAAuE9HsBs74g/wHtAAL7AAP6AP8E+/z/BQYAAQH++vz+CQcH+fn+AgMBAwQAAPr++///AwD+BgYGAAIC/fz9//3+AAL7AwEF/wL+9/j9DQ0O/vz/+ff0CQUJAQQF/f/89fj4BwcD/wEAAfv//f4BAQQDAQH9AgIA/f3+AAABAgAA/wH8Af/9AQMGAQIBAvv+/////v/+/wEA/wEAAgMA//sCBAYCAQ”
},
{
"b64_json": "D99vf7BwcI/v0A/vz9/wH8CQcI+vz8AQL9/vv+CAcF+wH/AwMA9/f8BwUEAwEB9fT+BAcKBAIB//7//gX5//v8/P7+DgkO+fr6/wD8AP8B/wAC/f4CAwD+/wT+Av79BwcE/Pz7+/sBAAD+AAQE//8BAP79AgIE///+AQABAv8BAwYA+vkB/v7/AwQE//7+/Pr6BAYCBgkE/f0B/Pr6AQP+BAED/gMC/fr+AwEC/v/+//7+CQcH+fz5BAYB9vf9BgQD+/n+BwYK/wD////9/gD5AwIDAAQE+/j6BAUD//rwAC/fr6+wYEBAQAA/4B//v6+/8AAAUDB/L49woGAQMDCfr7+wMCAQMHBPvy+AQJBQD+/wEEAfr3+gIGBgP/Af3++gUFAvz9//4A/wP/AQIGBPz+/QD7/wEDAgkGCPX29wMCAP4FBwX/+23"
}
]
}
次の内容
この記事の公開後、iris-openai のコンテンツが拡張され、Whisper メソッドと画像変更に使用できるようになっているでしょう。
以降の記事では、これらのメソッドの使用方法と画像を含める方法、または音声コンテンツのトランスクリプションの作成方法を説明します。