Field by Lower Hill
© Copyright Derek Harper and licensed for reuse under this Creative Commons Licence.

 

前回は、OpenAI社が初の開発者会議「OpenAI DevDay」で発表された一番の目玉であるGPT-4 Turboについて、一応試してみた結果をご報告しました。

残念ながらGPT-4 Turboを実際に使うところまではできませんでしたが、ChatGPTの旧Code Interpreterの機能とGoogle Colabのノートブックを用いて、GPT-4 Turboを呼び出すPythonコードを作って実行してみるところまでをご覧いたきました。

例えば、DevelopersIOの「OpenAI DevDayで発表された様々な機能について、公式ドキュメントを見ながら少しだけ詳細を確認してみた」で、実際にGPT-4 Turboを呼び出すまでが紹介されていますので、そちらをご覧いただくことにして、一応、GPT-4 Turboの特徴を復讐しておきましょう。

  1. 命令追従性の向上、JSONモード、seed(一貫性のある出力)、並列関数呼び出しなどを備えたGPT-4最新モデル
  2. 最大4096個の出力トークンを返す
  3. 2023年4月までの学習データを使用しているため、知識もアップデートされた
  4. 128kのコンテキストウィンドウを持ち、1つのプロンプトに300ページ以上のテキストを入力可能
  5. 通常のGPT-4に比べて、入力トークンで3倍安く、出力トークンで2倍安く利用可能

1番目は機能拡張、2,3,4は能力向上、おまけに5番目で利用料が安くなったということですね。

 

本日は、「OpenAI DevDay」で発表された「Assistants API」について調べてみました。

といっても、すでにネット上、いろいろ解説記事が載っていますので、まずは、そのリサーチ結果(ChatGPTに要約してもらったもの)です:

1)OpenAI 「How Assistants work

本家OpenAIの説明で、「Assistants API」の機能と使用方法について詳しく説明しています。以下にその要約を示します:

  1. Assistants APIの紹介: このAPIは、開発者が多様なタスクを実行できる強力なAIアシスタントを構築するために設計されています。現在ベータ版であり、機能の拡張が進行中です。
  2. APIの主要機能: Assistantsは、特定の指示に基づいてOpenAIのモデルを呼び出し、複数のツール(例:コードインタープリター、知識検索)に同時にアクセスできます。また、持続的なスレッドへのアクセスが可能で、これによりメッセージ履歴が保存され、会話がモデルのコンテキスト長を超えた場合には自動的に短縮されます。
  3. Assistantsの構成要素: Assistantsはモデルとツールを呼び出す目的に特化したAIで、スレッドはアシスタントとユーザー間の会話セッションを表し、メッセージはアシスタントまたはユーザーによって作成されます。
  4. Assistantsの作成: 最新のモデルと共にAPIを使用することが推奨され、アシスタントの作成にはモデルの指定が必要です。カスタム指示を使用してアシスタントの性格や目標を定義し、ツールパラメータを使って最大128個のツールへのアクセスを設定できます。
  5. スレッドとメッセージの管理: スレッドとメッセージはアシスタントとユーザー間の会話セッションを表し、モデルのコンテキストウィンドウを超えるメッセージがある場合、自動的に古いメッセージが削除されます。
  6. 制限と将来の展望: 現在のベータ版にはいくつかの既知の制限があり、将来的にはストリーミング出力、通知機能、DALL·Eツールのサポートなどが追加される予定です。

この文書は、Assistants APIの基本概念、その構成要素、およびAPIの使用方法について総合的なガイドを提供しています。

 

2)Note 「OpenAI API の Assistant API のしくみ

Npakaさんによる、上記のOpenAIの情報「How Assistants work」をかみ砕いて説明してくれています。以下にその要約を示します:

  1. Assistant APIの概要: OpenAI APIの一部であり、様々なタスクを実行できるAIアシスタントを作成するためのAPIです。アシスタントは、OpenAIのモデルを呼び出し、個性や能力を調整する指示を与えられます。
  2. アシスタントの機能: アシスタントは複数のツールにアクセスでき、「Code interpreter」「Knowledge retrieval」などのOpenAIが提供するツールに加えて、「Function calling」を介してユーザー提供のツールも利用できます。
  3. 永続的なスレッド: アシスタントは永続的なスレッドにアクセスし、メッセージ履歴を保存します。会話が長くなりすぎると自動的に切り捨てられます。
  4. ファイルへのアクセス: アシスタントは様々な形式のファイルにアクセスでき、ツールを使用する際にファイルを作成し、メッセージ内で引用することが可能です。
  5. アシスタントの作成: アシスタントの作成には「model」パラメータが必須で、その他のオプションでカスタマイズできます。ファイルのアクセス権も設定可能です。
  6. スレッドとメッセージの管理: スレッドとメッセージは会話セッションを表し、メッセージにはテキストや画像、その他のファイルを含めることができます。
  7. RunとRun Step: 「Run」はスレッドのメッセージリストを元にアシスタントに応答をリクエストするもので、ステータス管理やロック機能があります。
  8. 制限事項: Beta版にはいくつかの既知の制限があり、ストリーミング出力、通知サポート、DALL・Eツールのサポート、画像を使用したユーザーメッセージ作成のサポートなどが計画されています。

この文書は、Assistant APIの機能と利用方法に関する総合的なガイドとして機能します。

 

3)WEEL 「【Assistants API】アプリに超優秀AIアシスタントを埋め込めるOpenAI最新機能を使ってみた

OpenAIの最新機能であるAssistants APIを使用して、アプリケーションにAIアシスタントを組み込む方法について解説しています。以下はその内容の要約です:

  1. Assistants APIの概要: Assistants APIは、アプリにAIアシスタントを構築する機能で、外部の情報を取り入れ、多様なタスクをAIが実行できます。
  2. 機能の紹介: Assistants APIには4つの主要機能があります。これらは「Persistent Threads」(情報をスレッド形式で保持)、「Data Retrieval」(外部の情報をエンコーディングなしで取り込む)、「Code Interpreter」(コードを自動生成)、および「Function Calling」(プロンプトに応じた関数を呼び出す)です
  3. APIの使い方: Assistants APIはOpenAIのPlaygroundから利用可能で、AIアシスタントの作成には「Name」「Instructions」「Models」「Tools」の4つの項目を設定します。
  4. 実際の使用例: 実際にAPIを使用してみた例として、会話、データの取得、ファイル読み込み、長文解析のテストが紹介されています。
  5. 活用事例: APIの活用事例としては、コーディングアシスタント、旅行計画の提案、ファイルからの情報抽出、Pythonによる計算実行、英語論文の要約が挙げられています。
  6. 利点: 特に「Persistent Threads」による過去の会話履歴の保持が魅力的であり、検索機能やコード自動生成機能などが便利です。

全体的に、Assistants APIを活用することで、さまざまなアプリケーションにおいてAIアシスタントの組み込みが容易になり、効率的な情報取得やタスク処理が可能になるという内容です。

 

4)Zenn 「OpenAI の Assistants API を使って自然言語で Todo リストを操作するアプリを作ってみた

OpenAIのAssistants APIを使用して自然言語でTodoリストを操作するアプリケーションの作成について説明しています。概要は以下の通りです。

  1. OpenAIのAssistants APIの概要: OpenAIの新しいAPIの基本的な概念と利点が紹介されています。
  2. 自然言語処理の利用: 自然言語処理を利用してアプリケーション開発を容易にする方法について説明されています。
  3. 技術スタック: アプリケーションの構築には、js SDK、React、Bun、Elysiaなどの技術が使用されています。
  4. APIの設定方法: Assistants APIの設定プロセスについて詳細なガイドが提供されています。
  5. Functionsの仕組み: FunctionsというAPIの特定の機能に焦点を当てた説明があります。
  6. Todoリストのロジック作成: Todoリストを操作するためのロジックの開発方法が解説されています。
  7. 環境変数の設定: APIサーバーとWebクライアントのセットアップに必要な環境変数に関する情報が含まれています。
  8. APIサーバーの構築: APIサーバーの作成と設定に関する手順が記載されています。
  9. Webクライアントの作成: Webベースのクライアントインターフェースの構築方法が説明されています。
  10. 実際の使用例: 実際のアプリケーションの使用例として、Todoタスクの追加や編集が示されています。
  11. APIの利点とプロンプトエンジニアリング: Assistants APIの潜在的な利点と、Large Language Modelを効果的に活用するためのプロンプトエンジニアリングの重要性が強調されています。

 

5)Qiita 「OpenAI Assistants APIをPythonで実装する方法を解説

OpenAIのAssistants APIをPythonで実装する方法について詳細に解説しています。以下にその内容を要約します:

  1. Assistants APIの概要: Assistants APIは、独自のアプリケーション内でAIアシスタントを構築するためのAPIです。このAPIを使用すると、カスタムの指示に基づいたアシスタントを作成し、様々なモデルやツールを利用してユーザーの問い合わせに応答できます。
  2. APIの使用方法: 記事では、APIの使い方を説明し、具体的にはカスタムの指示を定義しモデルを選択してアシスタントを作成、ユーザーの質問に応じたスレッドの作成とメッセージの追加、アシスタントの実行と出力の取得などを説明しています。
  3. Python環境の設定: Python環境の設定、必要なライブラリのインストール、APIキーの設定などの準備作業について詳述されています。
  4. 実装例: 実際にAPIを利用して数学チューターのアシスタントを作成する例が示されており、具体的なコード例とともに説明がなされています。
  5. アシスタントの応用: このAPIの応用例として、ユーザーの質問に対するカスタマイズされたレスポンスの生成が可能であることが強調されています。
  6. 結論: 最後に、Assistants APIは柔軟で強力なツールであり、特定の業務を自動化したり、ユーザーエクスペリエンスを向上させるために使用できると締めくくられています。また、今後の技術革新に対する期待も表明されています。

この文書は、OpenAIのAssistants APIをPythonで効果的に利用するための包括的なガイドとして機能します。

 

6)Note 「【HELP ME】Assistants APIで破産しそうになった話

これだけ、他とは異質なのですが、ある意味、OpenAIのAssistants APIを使用する上で、一番重要なことを教えてくれました。以下にその要約を示します:

  1. Assistants APIの紹介: Assistants APIを利用してDiscordボットを作成。このAPIは、OpenAIのモデルを活用し、画像認識や画像生成などの機能を持つボットを作成できます。
  2. ボットの作成とテスト: ボットには知識検索、画像認識、画像生成などの機能を組み込み、Discord上でテストを行いました。
  3. 意外なコスト発生: ボットの公開後、想定外のコストが発生しました。特に、メッセージ量に対して課金が発生するAssistants APIの仕組みにより、使用料が予想以上に高額になったことを指摘しています。
  4. 詳細な分析: コストの原因を分析するため、使用量とトークン数を詳細に計算し、Assistants APIのメッセージ処理と課金システムの特性を理解しようと試みました。
  5. 制限と対策の必要性: Assistants APIのスレッド内のメッセージ数に制限がなく、コストが予想外に増加する可能性があることを発見しました。このため、メッセージ管理や課金システムに関する改善や対策が必要であると指摘しています。

この文書は、Assistants APIを利用する際の課金システムの理解と注意点を示唆しており、APIの使い方やコスト管理に関する貴重な洞察を提供しています。

メタのLlama2をAzure環境で使ってみようとした際、最低限Llama2の利用に必要なリソース利用料が高いので、使ってみるのをやめましたが、6番目の『破産しそうになった』という話を知って、Assistants APIも、「どんなものかちょっと試してみよう」とするのはやめました。

 

ただ、3番目の情報によると、OpenAI Playgroundからも使えるとのことなので、ちょっと覗いてみようと思ったのですが。。。

すでに、OpenAI PlaygroundでAssistants APIの動作確認まで実施されている報告を見つけました。

 

7)DevelopersIO 「OpenAIの新機能 Assistants APIの動作をPlaygroundで試してみよう

OpenAIの新機能「Assistants API」をPlaygroundで試す過程を詳しく解説しています。以下にその要約を示します:

  1. Assistants APIの概要: OpenAI DevDayで発表された新機能で、APIを通じてAIアシスタントをアプリケーション内に構築できます。このアシスタントは特定の指示に従い、モデルやツールと相互作用して多様なタスクを実行できます。
  2. 使用例: 使用例には、自然言語ベースのデータ分析アプリ、コーディングアシスタント、AI搭載のバケーションプランナー、音声制御DJ、スマートなビジュアルキャンバスなどがあります。
  3. Playgroundでのアシスタント作成: Playgroundにアクセスし、アシスタントを作成できます。作成には、アシスタントの名前、役割、使用するモデル、連携ツールなどを指定します。
  4. Code Interpreter機能のテスト: Code Interpreterツールを使用して、個人的な数学の家庭教師として機能するアシスタントを作成しました。GPT-3.5-turbo-1106モデルを使用し、PlaygroundでPythonのコードを試しました。
  5. RetrievalとFunctionsのテスト: Retrieval機能は外部からの知識を取り込み、Functions機能ではユーザー定義の関数をアシスタントが呼び出せます。ただし、Retrievalのテスト中にエラーが発生しました。
  6. アシスタントの応用: Assistants APIを活用することで、様々なアプリケーションにお助けエージェントを導入し、ユーザーの利便性を向上できる可能性があります。

この文書は、Assistants APIの機能とPlaygroundでの実装方法についての実践的なガイドを提供しています。

この7番目の情報に、Assistants APIを利用するためのPlaygroundの様々な画面イメージも出ていましたので、興味のある方は、そちらをご覧ください。

 

ということで、本日はこれで終わりにしたいのですが、

  • 結局Assistants APIは何なのか?
  • ChatGPT-4(11月に機能アップしたGPT-4)の新機能であるクリップ型アイコンでのデータアップロードと、Assistants APIのRetrieval機能に違いはあるのか?
  • Assistants APIのCode Interpreter, Function calling機能はChatGPT-4での機能と違うのか?
  • ブラウザベースでGPTsとして作成したアプリと、Assistants APIで作成したアプリでは、共通点は何で、相違点は何なのか

以上の疑問点についてChatGPT-4にまとめてもらいました。

※以前のGPT-4なら、「2021年9月以降のことには答えられません」と冷たくあしらわれるところですが、ChatGPT-4は、内部的にBingを呼び出して、以下のようにまとめてくれました。

ChatGPT-4 with GPTsアプリとOpenAIのAssistants APIを使用する際の違いと共通点は以下の通りです:

GPTsアプリを用いる場合(ChatGPT-4)

カスタマイズ: ChatGPTを特定の用途に合わせてカスタマイズできます​​。

ユーザーが作成: ユーザーは独自の指示、追加知識、スキルを組み合わせてChatGPTのカスタムバージョンを作成できます​​。

主な機能:

アイコン、GPTの名前、説明の設定。

GPTへの指示文、ユーザーの入力プロンプト例。

参照ファイルのアップロード。

Web Browsing、DALL·E、Code Interpreterなどの利用ツールの設定。

外部APIの設定​​。

Assistants APIを用いる場合

アプリケーション内のAIアシスタント構築: Assistants APIは、独自のアプリケーション内でAIアシスタントを構築するためのAPIです​​。

機能とツール:

カスタムの指示に基づいてアシスタントを作成。

様々なモデルやツール、外部の知識を利用してユーザーの問い合わせに応答。

Code Interpreter、Retrieval(外部知識を用いた検索)、Function calling(関数呼び出し)などのツールがサポート​​。

実装手順:

カスタムの指示を定義しモデルを選択してアシスタントを作成。

ユーザーが会話を開始した際のスレッド作成。

ユーザーの質問に応じたスレッドへのメッセージ追加。

アシスタントをスレッド上で実行して出力を取得​​。

パラメータ設定:

カスタムインストラクション(Instructions)。

モデル選択(Model)、例えばGPT-3.5やGPT-4。

OpenAIが構築およびホストしているツールのサポート(Tools)​​。

共通点:

両者ともにOpenAIのモデルを利用しており、ユーザーのニーズに合わせたカスタマイズが可能です。また、両者ともに柔軟な応用が可能で、特定のタスクや問い合わせに対応するためのアシスタントやGPTのバージョンを作成できます。

相違点:

GPTsアプリは主にChatGPT上でのカスタマイズに焦点を当てており、ユーザーが直接、直感的な方法でカスタマイズできる点が特徴です。一方で、Assistants APIはより技術的なアプローチを取り、アプリケーション内でのAIアシスタントの組み込みや、より詳細なカスタマイズが可能です。また、Assistants APIはコードベースの実装が主であり、開発者向けの機能が豊富です。

 

 

本日は以上です。

 

終わり