見出し画像

Blue Prismからcurlを使って生成AIのAPIを実行する!際の注意点・・・。

こんにちは、Bearです。
生成AI界隈のニュースが引き続き多いですね。各社が新バージョンを出してきたり、各生成AIの使い分けだったり、生成AIを組み込んだアプリを簡単に作る方法だったりと、様々な情報が出ているなと思う昨今、Blue Prismからもcurl使えば生成AIのAPIを簡単に使えてサクッと連携出来ちゃうよねって思って試したら、ちょっとハマったので記事にしました。。。

カールはやっぱりチーズ味かなぁ

何にハマったのか?

こちらの記事でcurlを使ってAPIを実行する記事を書きました。
で、各生成AIのAPIリファレンスにはcurlでの実行方法が載っています。
例えば、OpenAIはこちら、Geminiはこちら、Claudeはこちら

各社きちんとcurlのサンプルも書いてあってありがたし、コマンドプロンプトからも普通に実行できちゃうから、Blue Prismから実行するのも簡単過ぎてこれだけだとnote記事にするレベルでもなさそうだなぁ、なんて思ったら。

GeminiのAPIを[Utility - Environment]VBOの[Start Process Read Stderr and Stdout]でcurl実行した際の戻り値の抜粋

なるほど、日本語が文字化けするのね。。。

文字化けの回避方法

文字化けしてしまうので、このままでは使えない。では、curlを使うのは諦めなければならないのか。いや、curlで実行できるお手軽さを捨ててはもったいない!ということで、回避策を検討しました。
curl.exeなどの外部コマンドをそのまま呼ぶのは難しそうだし、ではコマンドプロンプトを別オブジェクトで起動して、それにcurlを実行するコマンド張り付けて実行して結果のテキストを取得するってちょっと面倒、ということで、[Start Process Read Stderr and Stdout]のアクションのコードステージをいじることにしました。だって、コードをいじるのはChatGPTアドバイザーが得意ですからね。

ChatGPTに聞いてさくっと解決

[Start Process Read Stderr and Stdout]アクションを見てみると、ProcessStartInfoを使っているようです。そのまま聞いてみます。

いきなり正解っぽい!?
サンプルコードから抜粋。注目点をしっかり強調表示してくれる。

ChatGPTからの回答を[Start Process Read Stderr and Stdout]アクションのコードに入れてみると、直った!

日本語も文字化けなく受信

連携サンプルオブジェクト

上記の修正点を加えたOpenAIとGeminiのAPI実行サンプルのオブジェクトを以下に置きます。
[Start Process Read Stderr and Stdout]アクションについては各オブジェクトに組み込んでます。
本来的には[Utility - Environment]VBOの拡張版として別VBO化するのが良いかもしれませんが、サンプルということで。UTF-8エンコーディングを固定としているのでAPI実行に応じて変更させる内部アクションとしてこのままでもありか??という思いもあったりします。

ご利用は計画的に

サンプルはOpenAIとGeminiにしているのは、Claudeは試すことが出来ずに作れなかったからなのでした。ClaudeのAPIキーを取得しようとすると会社名の入力を求められ、どういうことだろうと思ったら以下の通りのようです。
個人利用を目的にしていないのですぐに使えなかったのでした。

OpenAIやGeminiについてもどのようなアカウント設定でAPIキーを取得して使っているかなど注意しながら便利に生成AIを使っていきましょう!