個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。2023-05-18【LLM】guidanceを使ってみるLLMLLMをプロンプトやチェーンよりも効果的に制御することができるguidanceを試してみた。LangChainを使うと、複数のプロンプトを組み合わせて、前のプロンプトの回答を次のプロンプトに渡すような処理ができる。そのような処理をするには、Pythonでプログラミングが必要なため、ユーザ側で簡単に試すことができない。guidanceを使うと、テキストに記述することで、プロンプトの組み合わせを制御できる。以下、公式のノートブックのチャットの例を実行してみた結果である。日本語で出力するように一部修正している。GitHub例1:ゴールを与えて計画を立案するゴールだけ与えて、プランのオプションを生成して、その中からベストなプランを選択して、それを基に方法を回答する。プランのオプションを生成して、その中からベストなプランを選択する部分は、内部で自動的にプロンプトを生成して実行して、ユーザからは見えない。max_tokens=500}}{{~/assistant}}ゴール=「読書量を増やす」とした場合の回答:読書量を増やすための計画を作成します。毎日のルーティンに30分の読書時間をスケジュールすることが重要です。これを実現するためには、以下のような方法があります。1.スケジュールを作成する:毎日のスケジュールに、30分の読書時間を割り当てることが大切です。スケジュールを作成することで、読書時間を忘れることがなくなります。2.読書スペースを作る:読書スペースを作ることで、読書に集中しやすくなります。静かな場所や、好きな音楽を聴きながら読書する場所を作ると良いでしょう。3.本を選ぶ:自分が興味を持つ本を選ぶことが大切です。読みやすい本や、自分の専門分野に関する本を選ぶと、読書に取り組みやすくなります。4.読書の習慣を身につける:毎日同じ時間に読書することで、読書の習慣を身につけることができます。習慣化することで、読書が自然な行動になります。以上の方法を実践することで、読書量を増やすことができます。毎日30分の読書時間を確保し、読書の習慣を身につけることが大切です。「毎日のルーティンに30分の読書時間をスケジュール」の部分は、5つのプランを生成した中から選択した内容になっている。max_tokens=600}}のように記述されており、ChatGPTに温度パラメータ=1で、5つの候補を生成させている。options}}の部分で、ベストな回答を文字列から抽出するためPythonの関数を呼び出している。質問を答えるのに適した専門家を3人挙げさせて、それぞれの専門家が共同で書いたかのように回答をさせる。max_tokens=1500}}{{~/assistant}}質問「人生の意味とは?」に対する回答:人生の意味とは何でしょうか?この問いに対する答えは、多くの哲学者や思想家が長年にわたって探求してきました。私たちのパネルに参加した3人の世界的な専門家たちは、それぞれ異なる観点からこの問いに答えます。一人目の専門家は、ビクトール・フランクルです。彼は、ホロコーストを生き延びたオーストリアの神経学者であり精神科医です。彼は、自分自身の経験から、人生に意味を見出すことの重要性を説いた『夜と霧』や『意味のある人生』などの著書を執筆しました。フランクルは、人生の意味は、自分自身の内面にあるものであり、自分自身の選択によって見出されるものだと主張しています。二人目の専門家は、ダライ・ラマです。彼は、チベット仏教の精神的指導者であり、幸福や思いやり、そして人生の目的について広く著作を残しています。彼は、人生の意味は、他者に奉仕することや、自己超越によって見出されるものだと考えています。三人目の専門家は、アリストテレスです。彼は、古代ギリシャの哲学者であり、倫理学や人間の繁栄の本質について多くの著作を残しました。彼は、人生の究極の目的は、ユダイモニア(繁栄や幸福の状態)を達成することだと主張しています。これらの専門家たちは、それぞれ異なる観点から人生の意味について語っています。フランクルは、自分自身の内面にある意味を見出すことが重要だと主張し、ダライ・ラマは、他者に奉仕することや自己超越によって意味を見出すことができると考えています。アリストテレスは、繁栄や幸福を追求することが人生の意味だと考えています。これらの異なる観点から、人生の意味について考えることができます。例3:検索して回答Bingで検索した結果を基に回答する。query)}}」の部分で、検索する処理を呼び出している。検索処理は、Pythonの関数としてbingを検索する処理を実装している。information.まとめLangChainよりも手軽に制御ができるので使いやすいと思う。LangChainで標準にない処理を実装しようとすると、Chainのクラスを自作する必要があって面倒なのに比べて、ガイダンス言語からPythonの関数を呼び出せるのでより手軽に試せるようになっている。#ifや#eachで制御構文も使えるので、複雑な処理も実装できる。オープンソースのLLMを使用する場合は、推論の途中に介入して出力を制御することもできるようだがそちらは試していない。今のところLangChainの方がベクトルDBへの対応などが標準で用意されているため分がありそうだが、今後guidanceが主流になってくるかもしれない。何番煎じかわからないくらいのネタだが、Arxivの論文を3行に要...2023-04-02ChatGPTで作品のタイトルの略称を生成するChatGPTで作品のタイトルの略称を生成できるか試してみた。»プロフィールid:TadaoYamaokaスマホアプリ開発とディープラーニングを使った将棋ソフトの開発を行っています。)はてなブログをはじめよう!TadaoYamaokaさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。