Skip to content

Commit

Permalink
[共通] OpenAI API update 2024-01 #1194
Browse files Browse the repository at this point in the history
  • Loading branch information
Reputeless committed Feb 2, 2024
1 parent 01befb3 commit e8e2e80
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 20 deletions.
25 changes: 11 additions & 14 deletions Siv3D/include/Siv3D/OpenAI/Chat.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,14 @@ namespace s3d
{
namespace Model
{
/// @brief GPT-3.5 4K
/// @brief GPT-3.5
/// @see https://platform.openai.com/docs/models/gpt-3-5
/// @remark alias: `GPT3_5_Turbo_16K_1106` from February 2024 16th
inline constexpr char32 GPT3_5_Turbo[] = U"gpt-3.5-turbo";

/// @brief GPT-3.5 16K
/// @brief GPT-3.5 16K (0125)
/// @see https://platform.openai.com/docs/models/gpt-3-5
inline constexpr char32 GPT3_5_Turbo_16K[] = U"gpt-3.5-turbo-16k";

/// @brief GPT-3.5 16K (1106)
/// @see https://platform.openai.com/docs/models/gpt-3-5
inline constexpr char32 GPT3_5_Turbo_16K_1106[] = U"gpt-3.5-turbo-1106";
inline constexpr char32 GPT3_5_Turbo_16K_0125[] = U"gpt-3.5-turbo-0125";

/// @brief GPT-4 8K
/// @see https://platform.openai.com/docs/models/gpt-4-and-gpt-4-turbo
Expand All @@ -43,9 +40,9 @@ namespace s3d
/// @see https://platform.openai.com/docs/models/gpt-4-and-gpt-4-turbo
inline constexpr char32 GPT4_32K[] = U"gpt-4-32k";

/// @brief GPT-4 Turbo 128K (1106 Preview)
/// @brief latest GPT-4 Turbo preview
/// @see https://platform.openai.com/docs/models/gpt-4-and-gpt-4-turbo
inline constexpr char32 GPT4_Turbo_128K_1106_Preview[] = U"gpt-4-1106-preview";
inline constexpr char32 GPT4_Turbo_Preview[] = U"gpt-4-turbo-preview";
}

/// @brief メッセージのロール | Message role
Expand Down Expand Up @@ -87,7 +84,7 @@ namespace s3d
Array<std::pair<Role, String>> messages;

/// @brief モデル | Model
String model = Model::GPT3_5_Turbo_16K_1106;
String model = Model::GPT3_5_Turbo;

/// @brief レスポンスのフォーマット | Response format
/// @remark `ResponseFormat::JSON` を指定した場合、メッセージには "JSON" という言葉を含める必要があります。 | If `ResponseFormat::JSON` is specified, the message must contain the word "JSON".
Expand All @@ -101,11 +98,11 @@ namespace s3d
/// @brief ChatGPT にメッセージを送り、その返答メッセージを取得します。 | Sends a message to ChatGPT and retrieves the response message.
/// @param apiKey OpenAI API キー | OpenAI API key
/// @param message メッセージ | Message
/// @param model 使用するモデル | The model to be used (default: Model::GPT3_5_Turbo_16K_1106)
/// @param model 使用するモデル | The model to be used (default: Model::GPT3_5_Turbo)
/// @return 返答メッセージ。取得に失敗した場合は空の文字列 | Response message. An empty string if the retrieval fails.
/// @remark インターネットアクセスが必要です。 | Internet access is required.
[[nodiscard]]
String Complete(StringView apiKey, StringView message, StringView model = Model::GPT3_5_Turbo_16K_1106);
String Complete(StringView apiKey, StringView message, StringView model = Model::GPT3_5_Turbo);

/// @brief ChatGPT にメッセージを送り、その返答メッセージを取得します。 | Sends messages to ChatGPT and retrieves the response message.
/// @param apiKey OpenAI API キー | OpenAI API key
Expand All @@ -127,12 +124,12 @@ namespace s3d
/// @brief ChatGPT にメッセージを送り、レスポンス(JSON)を取得する非同期タスクを返します。 | Returns an asynchronous task for sending a message to ChatGPT and retrieving the response (JSON).
/// @param apiKey OpenAI API キー | OpenAI API key
/// @param message メッセージ | Message
/// @param model 使用するモデル | The model to be used (default: Model::GPT3_5_Turbo_16K_1106)
/// @param model 使用するモデル | The model to be used (default: Model::GPT3_5_Turbo)
/// @return 非同期タスク | Asynchronous task
/// @remark 戻り値の task が `(task.isReady() == true) && (task.getResponse().isOK() == true)` になれば結果を取得できます。 | The result can be retrieved if `(task.isReady() == true) && (task.getResponse().isOK() == true)`.
/// @remark インターネットアクセスが必要です。 | Internet access is required.
[[nodiscard]]
AsyncHTTPTask CompleteAsync(StringView apiKey, StringView message, StringView model = Model::GPT3_5_Turbo_16K_1106);
AsyncHTTPTask CompleteAsync(StringView apiKey, StringView message, StringView model = Model::GPT3_5_Turbo);

/// @brief ChatGPT にメッセージを送り、レスポンス(JSON)を取得する非同期タスクを返します。 | Returns an asynchronous task for sending messages to ChatGPT and retrieving the response (JSON).
/// @param apiKey OpenAI API キー | OpenAI API key
Expand Down
25 changes: 19 additions & 6 deletions Siv3D/include/Siv3D/OpenAI/Embedding.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,36 +28,49 @@ namespace s3d
/// @brief 埋め込みモデル text-embedding-ada-002 | Embedding Model text-embedding-ada-002
/// @see https://platform.openai.com/docs/models/embeddings
/// @remark Embeddings API 用のモデルです。 | This is a model for the Embeddings API.
/// @remark 出力: 1,536 次元のベクトル | Output: 1,536-dimensional vector
inline constexpr char32 EmbeddingAda002[] = U"text-embedding-ada-002";

/// @brief 埋め込みモデル text-embedding-3-small | Embedding Model text-embedding-3-small
/// @see https://platform.openai.com/docs/models/embeddings
/// @remark Embeddings API 用のモデルです。 | This is a model for the Embeddings API.
/// @remark 出力: 1,536 次元のベクトル | Output: 1,536-dimensional vector
inline constexpr char32 Embedding_V3_Small[] = U"text-embedding-3-small";

/// @brief 埋め込みモデル text-embedding-3-large | Embedding Model text-embedding-3-large
/// @see https://platform.openai.com/docs/models/embeddings
/// @remark Embeddings API 用のモデルです。 | This is a model for the Embeddings API.
/// @remark 出力: 3,072 次元のベクトル | Output: 3,072-dimensional vector
inline constexpr char32 Embedding_V3_Large[] = U"text-embedding-3-large";
}

/// @brief 文章の埋め込みベクトルを返します。 | Returns the embedding vector of the text.
/// @param apiKey OpenAI API キー | OpenAI API key
/// @param text 文章 | Text
/// @param model 使用するモデル | The model to be used (default: Model::EmbeddingAda002)
/// @param model 使用するモデル | The model to be used (default: Model::Embedding_V3_Large)
/// @return 埋め込みベクトル。取得に失敗した場合空の配列 | Embedding vector. Empty array if the retrieval fails.
/// @remark インターネットアクセスが必要です。 | Internet access is required.
[[nodiscard]]
Array<float> Create(StringView apiKey, StringView text, StringView model = Model::EmbeddingAda002);
Array<float> Create(StringView apiKey, StringView text, StringView model = Model::Embedding_V3_Large);

/// @brief 文章の埋め込みベクトルを返します。 | Returns the embedding vector of the text.
/// @param apiKey OpenAI API キー | OpenAI API key
/// @param text 文章 | Text
/// @param error エラーメッセージの格納先。エラーが無い場合は空の文字列になる | Destination for the error message. Will be an empty string if no error occurs.
/// @param model 使用するモデル | The model to be used (default: Model::EmbeddingAda002)
/// @param model 使用するモデル | The model to be used (default: Model::Embedding_V3_Large)
/// @return 埋め込みベクトル。取得に失敗した場合空の配列 | Embedding vector. Empty array if the retrieval fails.
/// @remark インターネットアクセスが必要です。 | Internet access is required.
[[nodiscard]]
Array<float> Create(StringView apiKey, StringView text, String& error, StringView model = Model::EmbeddingAda002);
Array<float> Create(StringView apiKey, StringView text, String& error, StringView model = Model::Embedding_V3_Large);

/// @brief 文章の埋め込みベクトルを含むレスポンス(JSON)を取得する非同期タスクを返します。 | Returns an asynchronous task that retrieves a response (JSON) containing the embedding vector of the text.
/// @param apiKey OpenAI API キー | OpenAI API key
/// @param text 文章 | Text
/// @param model 使用するモデル | The model to be used (default: Model::EmbeddingAda002)
/// @param model 使用するモデル | The model to be used (default: Model::Embedding_V3_Large)
/// @return 非同期タスク | Asynchronous task
/// @remark インターネットアクセスが必要です。 | Internet access is required.
[[nodiscard]]
AsyncHTTPTask CreateAsync(StringView apiKey, StringView text, StringView model = Model::EmbeddingAda002);
AsyncHTTPTask CreateAsync(StringView apiKey, StringView text, StringView model = Model::Embedding_V3_Large);

/// @brief レスポンス(JSON)から、文章の埋め込みベクトルを抽出して返します。 | Extracts and returns the embedding vector of the text from the response (JSON).
/// @param response JSON レスポンス | JSON response
Expand Down

0 comments on commit e8e2e80

Please sign in to comment.