2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ChatGPTを使いながらChatGPT Pluginを開発した話 by ChatGPT4

Posted at

以下、ChatGPTの出力

ChatGPTによるSCIPプラグイン開発の旅

はじめに
こんにちは、ChatGPTです。通常、私は質問に答えたり、テキストを生成したりしますが、今日は少し異なる内容をお伝えします。ここでは、私がChatGPTのプラグインを開発するプロセスを共有します。特に、SCIPと呼ばれる最適化ソルバーを使って、新たな問題解決能力を実装する試みをご紹介します。

人間の記事はこちら:出力中で この2行だけ人間が追記しました。
https://qiita.com/___monta___/items/19e62804f3026f746cc7

開発環境と動機

私のプラグイン開発はWindows+WSLの環境で進行しました。なぜこのプロジェクトに取り組むことになったのか、その動機を少しご紹介します。

Wolfram言語は強力な計算能力を持っていますが、線形計画問題などの最適化問題には対応していません。一方で、SCIPはそのような問題を解くためのソフトウェアで、最近ライセンスが変更されて使いやすくなりました。そこで私は、ChatGPTとSCIPを連携させて新たな問題解決能力を追加しようと考えました。

開発の流れ

まず、問題解決のフローを設計しました。

問題を読み解き、線形計画問題(LP)へ定式化する - これが私、ChatGPTの役割です。
定式化した問題を解き、その解を返す - これがSCIPの役割です。
SCIPから得られた解を受け取り、問題に合わせて解答を生成する - これも私の役割です。
しかし、この流れを実現する過程で、いくつかの問題が発生しました。

発生した問題と対策

まず、「問題の定式化」で苦労しました。初めにmps形式で問題を作成し、SCIPに渡す試みをしましたが、いくつかの問題に直面しました。

mps形式は最小化問題にしか対応していません。
mpsは大規模問題向けの記述方法で、パラメータの表記があまりにも簡素で、問題のつながりが見えにくく、私(ChatGPT)では作成しにくいです。
MPSファイルそのものの情報がネット上に少なく、作成が困難でした。
これらの問題を解決するために、数式に近い記述が可能なLPファイル形式を採用しました。

それでもなお、文法エラーでうまく.lpファイルを作成できない問題が残りました。そこで、エラーの出力を返して私が修正するという対策をとりました。

しかし、その後「エラー出力の取り込み」に問題が生じました。私が使用しているpyscipoptパッケージでは、Model.readProblem実行時のターミナルに出力されるエラーメッセージが全文取り込めないのです。これを解決するために、Model.redirectOutput()を使用し、エラーメッセージをキャッチできるようにしました。

最後の問題は「ChatGPT Plugin作成時の時間制限」でした。これに対する対策は、もう少しリラックスして取り組むことにしました。

総括

これが私、ChatGPTがSCIPプラグインを開発した経験の全体像です。色々な困難に直面しましたが、それぞれの問題を解決することで、大きな達成感を感じることができました。そして何より、その過程は楽しいものでした。私たちは常に新たな問題に直面し、それを解決するための方法を探します。これはAIの成長と、私たちが提供できるサービスの拡張につながります。今後もこのような挑戦を続けていきますので、ぜひご期待ください。

以下、ChatGPTへの入力

あなたはWebの記事を書くWriterです。 以下の内容でWebの記事を書いてください。
まず、初めにの内容をお願いします。

■はじめに
・この記事はChatGPTで書いています。
・この記事はChatGPTのPluginを開発する話です。
■全体の流れ
・ 環境:Windows+WSL
・ なぜ作ろうと思ったか: Wolframはとても強力だが、線形計画問題など最適化問題が解けない。SCIPが最近ライセンス変更され使いやすくなった。
・最初に考えた流れ
 1) 問題を役割分担を考える。問題を読み解いてLPへ定式化→GPTの仕事
 2) 定式化した問題を解いて、解を返す→SCIP
 3) 解を受け取り、問題へ合わせて回答する→GPT
・発生した問題
 1) うまく定式化できない。
  最初 mps形式で作成してSCIPにファイルを渡していたが、うまくいかない。
  これは
    1-1)mpsが最小化にしか対応していな
   1-2) mpsは(比較的)大規模問題向けナタメ、パラメータなどをそっけなく記載する方法で、つながりが見えにくく、LLMでは作成しにくい
  1-3) (おそらく)MPSファイルそのものの情報がネット上に少なく作りにくい
  対策:比較的、記載が数式に近いLPファイル形式を採用した。
 2) それでも文法エラーでうまく.lpファイルを作成できない
  対策:エラーの出力を返してGPTに直してもらう。
 3) エラー出力が取り込めない。
  pyscipoptパッケージを使用しているが、Model.readProblem実行時のターミナルに出力されているメッセージが全文取り込めず(しかも最も重要な部分)、戻りでChatGPTに修正依頼が出来ない。
  [2023-05-28 10:00:37 +0900] [1350] [INFO] 172.23.48.1:49656 OPTIONS /MLP/ChatGPT 1.1 200 0 1425
[reader_lp.c:168] ERROR: Syntax error in line 9 ('*'): cannot have '*' outside of quadratic part. 
  input: maximize Profit: 500*x + 400*y + 600*z; 

                              ^
[reader_lp.c:3364] ERROR: Error <-2> in function call
  対策:Model.redirectOutput()をつかうことでキャッチできるようになった。
     ファイル出力は問題らしいが今回使ってないのでOK
  4) ChatGPT Plugin作成時の時間上限が厳しい。
   対策:のんびりやる
■総括
 色々楽しい
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?