OpenAI: Chat, 開始

OpenAI: Chat, Start

OpenAI API (ChatGPT) との会話を開始します。使用される MODEL はデフォルトで “gpt-4” です(変更可能)。指示文(PROMPT)に対する応答文(COMPLETION)を自動的に取得します。

Auto Step icon
Configs for this Auto Step
AuthzConfU
U: HTTP認証設定を選択してください(Secret API Key @トークン直接指定) *
StrConfM
M: モデル名(AIエンジン名)をセットしてください (default “gpt-4”)#{EL}
StrConfA1
A1: リクエスト PROMPT(指示文)をセットしてください *#{EL}
SelectConfB1
B1: レスポンス COMPLETION(応答文)が格納される文字列型データ項目を選択してください(更新) *
SelectConfC1
C1: PROMPT トークン数が格納される数値型データ項目を選択してください(更新)
SelectConfC2
C2: COMPLETION トークン数が格納される数値型データ項目を選択してください(更新)
SelectConfC3
C3: 合計トークン数が格納される数値型データ項目を選択してください(更新)
Script (click to open)
// GraalJS Script (engine type: 2)

//////// START "main()" /////////////////////////////////////////////////////////////////

main();
function main(){ 

////// == Config Retrieving / 工程コンフィグの参照 ==
const strAuthzSetting   = configs.get( "AuthzConfU" );       /// REQUIRED
  engine.log( " AutomatedTask Config: Authz Setting: " + strAuthzSetting );
const strModel          = configs.get( "StrConfM" ) !== "" ? // NotRequired
                          configs.get( "StrConfM" ) : "gpt-4"; // (default)
  engine.log( " AutomatedTask Config: OpenAI Model: " + strModel );
const strPrompt         = configs.get( "StrConfA1" );        /// REQUIRED
  if( strPrompt       === "" ){
    throw new Error( "\n AutomatedTask ConfigError:" +
                     " Config {A1: Prompt} must be non-empty \n" );
  }
const strPocketCompletion       = configs.getObject( "SelectConfB1" ); /// REQUIRED
const numPocketPromptTokens     = configs.getObject( "SelectConfC1" ); // NotRequired
const numPocketCompletionTokens = configs.getObject( "SelectConfC2" ); // NotRequired
const numPocketTotalTokens      = configs.getObject( "SelectConfC3" ); // NotRequired


////// == Data Retrieving / ワークフローデータの参照 ==
// (Nothing. Retrieved via Expression Language in Config Retrieving)


////// == Calculating / 演算 ==

//// OpenAI API > Documentation > API REFERENCE > CHAT
//// https://platform.openai.com/docs/api-reference/chat

/// prepare json
let strJson = {};
    strJson.model = strModel;
    strJson.messages = [];
    strJson.messages[0] = {};
    strJson.messages[0].role = "user";
    strJson.messages[0].content = strPrompt;

/// prepare request1
let request1Uri = "https://api.openai.com/v1/chat/completions";
let request1 = httpClient.begin(); // HttpRequestWrapper
    request1 = request1.authSetting( strAuthzSetting ); // with "Authorization: Bearer XX"
    request1 = request1.body( JSON.stringify( strJson ), "application/json" );

/// try request1
const response1     = request1.post( request1Uri ); // HttpResponseWrapper
engine.log( " AutomatedTask ApiRequest1 Start: " + request1Uri );
const response1Code = response1.getStatusCode() + ""; // JavaNum to string
const response1Body = response1.getResponseAsString();
engine.log( " AutomatedTask ApiResponse1 Status: " + response1Code );
if( response1Code !== "200"){
  throw new Error( "\n AutomatedTask UnexpectedResponseError: " +
                    response1Code + "\n" + response1Body + "\n" );
}

/// parse response1
engine.log( response1Body ); // debug
/* engine.log( response1Body ); // debug
{
  "id":"chatcmpl-6pttfxxxxxmzOKmyyyyy9A2gIwwww",
  "object":"chat.completion",
  "created":1677827615,
  "model":"gpt-3.5-turbo-0301",
  "usage":{
    "prompt_tokens":41,
    "completion_tokens":424,
    "total_tokens":465
  },
  "choices":[{
    "message":{
      "role":"assistant",
      "content":"\n\n京都の良さは、数え切れないほどたくさんありますが...\n\n清水寺は..."
    },
    "finish_reason":null,
    "index":0
  }]
}
*/
const response1Obj = JSON.parse( response1Body );


////// == Data Updating / ワークフローデータへの代入 ==

if( strPocketCompletion !== null ){
  engine.setData( strPocketCompletion,
                  response1Obj.choices[0].message.content ?? ""
                );
}
if( numPocketPromptTokens !== null ){
  engine.setData( numPocketPromptTokens, new java.math.BigDecimal(
                  response1Obj.usage.prompt_tokens ?? 0
                ));
}
if( numPocketCompletionTokens !== null ){
  engine.setData( numPocketCompletionTokens, new java.math.BigDecimal(
                  response1Obj.usage.completion_tokens ?? 0
                ));
}
if( numPocketTotalTokens !== null ){
  engine.setData( numPocketTotalTokens, new java.math.BigDecimal(
                  response1Obj.usage.total_tokens ?? 0
                ));
}
// "??": Nullish coalescing operator (ES11)
// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing

} //////// END "main()" /////////////////////////////////////////////////////////////////


/*
Notes:
- If you place this "Automated Step" in the Workflow diagram,
    - the request will be automatically sent every time the process token arrives.
    - A request is automatically sent to the OpenAI API server. (REST API)
    - The response from the OpenAI API server is automatically parsed.
    - You can incorporate "AI assistance" into your business processes.
- About "OpenAI API"
    - https://platform.openai.com/docs/introduction/overview
    - The OpenAI API can be applied to virtually any task that involves understanding or generating natural language or code.
    - For example, if you give the API the prompt, "Write a tagline for an ice cream shop",
        - it will return a completion like "We serve up smiles with every scoop!"
- API key is required to use the OpenAI API.
    - Obtain the API key to be used in advance.
- Configurable MODEL names:
    - https://platform.openai.com/docs/models/model-endpoint-compatibility

APPENDIX
- Header for developers belonging to multiple organizations is not supported (as of 202303)
    - `OpenAI-Organization`
- Requests with context are not supported.
    - You cannot set the flow of conversation in this auto-step.
    - Use "OpenAI: Chat, Interact with Parameters" instead.
        - https://support.questetra.com/addons/openai-chat-interact-with-parameters-2023/
- To activate the Workflow App including this "Add-on automated Step", "HTTP Authorization Setting" is required.
    - Set "Secret API Key" as communication token. (Token Fixed Value)
- Older versions
    - https://support.questetra.com/addons/openai-chat-start-2023/
        - Compatible.
        - Overwrite to update "Add-on Service Task".
        - No need for re-release of "Workflow App"
- If access to the latest Model is restricted, 404 error ("That model does not exist")
    - Even if the latest Model is released by OpenAI, it is not open to all developers.
- An error may occur depending on the timing.
    - 429 error ("Too Many Requests")
    - Timeout script error 'java.util.concurrent.TimeoutException'

Notes-ja:
- この[自動工程]をワークフロー図に配置すれば、案件が到達する度にリクエストが自動送信されます。
    - OpenAI API サーバに対してリクエストが自動送出されます。(REST API通信)
    - OpenAI API サーバからのレスポンスが自動解析されます。
    - "AI による支援" を業務プロセスに組み込むことが出来ます。
- "OpenAI API" とは
    - https://platform.openai.com/docs/introduction/overview
    - OpenAI API は、自然言語やコードを理解し、自然言語やコードを生成します。あらゆる仕事に適用可能です。
    - たとえば、「アイスクリーム屋のキャッチフレーズを書いて」というプロンプト(Prompt)を与えると、
        - 「全てのスクープを笑顔で!」といった応答(Completion)が返されます。 (←Questetra社による意訳)
- OpenAI API の利用には API key が必要です。
    - あらかじめ "Secret API Key" を取得しておいてください。
- 設定可能なモデル名:
    - https://platform.openai.com/docs/models/model-endpoint-compatibility


APPENDIX-ja
- Older versions
    - https://support.questetra.com/ja/addons/openai-chat-start-2023/
        - 互換性あります。
        - [アドオンサービスタスク]を上書きアップデートしてください。
        - [ワークフローアプリ]の更新リリースは、必ずしも必要ではありません。
            - モデル(AIエンジン)を変更することが出来るようになりました。
- 複数組織に所属する開発者向けのヘッダには未対応です(202303時点)
    - `OpenAI-Organization`
- 文脈を使ったリクエストには未対応です。
    - この自動工程では会話の流れを設定することはできません。
    - 代わりに『OpenAI: Chat, パラメータ付き対話』を利用してください。
        - https://support.questetra.com/ja/addons/openai-chat-interact-with-parameters-2023/
- この[アドオン自動工程]を含むワークフローアプリを運用するには[HTTP 認証設定]が必要です。
    - "Secret API Key" を通信トークンとしてセットします。[トークン直接指定]
- 最新Modelへのアクセスが制限されている場合、404エラー("That model does not exist")
    - 最新Modelが発表されても、全ての開発者アカウントがアクセスできる訳ではありません。
    - eg. `GPT-4 is currently in a limited beta and only accessible to those who have been granted access.`
    - eg. `AutomatedTask UnexpectedResponseError: 404 { "error": { "message": "That model does not exist",`
- タイミングによって、エラーになる場合があります。
    - 429エラー("Too Many Requests")
    - Timeout スクリプトエラー 'java.util.concurrent.TimeoutException'
*/

Download

warning 自由改変可能な JavaScript (ECMAScript) コードです。いかなる保証もありません。
(アドオン自動工程のインストールは Professional editionでのみ可能です)

Notes

  • この[自動工程]をワークフロー図に配置すれば、案件が到達する度にリクエストが自動送信されます。
    • OpenAI API サーバに対してリクエストが自動送出されます。(REST API通信)
    • OpenAI API サーバからのレスポンスが自動解析されます。
    • “AI による支援” を業務プロセスに組み込むことが出来ます。
  • “OpenAI API” とは
    • https://platform.openai.com/docs/introduction/overview
    • OpenAI API は、自然言語やコードを理解し、自然言語やコードを生成します。あらゆる仕事に適用可能です。
    • たとえば、「アイスクリーム屋のキャッチフレーズを書いて」というプロンプト(Prompt)を与えると、
      • 「全てのスクープを笑顔で!」といった応答(Completion)が返されます。 (←Questetra社による意訳)
  • OpenAI API の利用には API key が必要です。
    • あらかじめ “Secret API Key” を取得しておいてください。
  • 設定可能なモデル名:

Capture

OpenAI API (ChatGPT) との会話を開始します。使用される MODEL はデフォルトで "gpt-4" です(変更可能)。指示文(PROMPT)に対する応答文(COMPLETION)を自動的に取得します。

Appendix

  • Older versions
    • https://support.questetra.com/ja/addons/openai-chat-start-2023/
      • 互換性あります。
      • [アドオンサービスタスク]を上書きアップデートしてください。
      • [ワークフローアプリ]の更新リリースは、必ずしも必要ではありません。
        • モデル(AIエンジン)を変更することが出来るようになりました。
  • 複数組織に所属する開発者向けのヘッダには未対応です(202303時点)
    • OpenAI-Organization
  • 文脈を使ったリクエストには未対応です。
  • この[アドオン自動工程]を含むワークフローアプリを運用するには[HTTP 認証設定]が必要です。
    • “Secret API Key” を通信トークンとしてセットします。[トークン直接指定]
  • 最新Modelへのアクセスが制限されている場合、404エラー(”That model does not exist”)
    • 最新Modelが発表されても、全ての開発者アカウントがアクセスできる訳ではありません。
    • eg. GPT-4 is currently in a limited beta and only accessible to those who have been granted access.
    • eg. AutomatedTask UnexpectedResponseError: 404 { "error": { "message": "That model does not exist",
  • タイミングによって、エラーになる場合があります。
    • 429エラー(”Too Many Requests”)
    • Timeout スクリプトエラー ‘java.util.concurrent.TimeoutException’

See Also

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

%d人のブロガーが「いいね」をつけました。