Closed3

guidanceをためしてみる

kun432kun432

https://github.com/microsoft/guidance

DeepL訳

ガイダンスは、従来のプロンプトやチェイニングよりも効果的かつ効率的に最新の言語モデルを制御することができます。ガイダンスプログラムでは、生成、プロンプト、論理制御を、言語モデルが実際にテキストを処理する方法と一致する単一の連続したフローに織り交ぜることができます。Chain of Thoughtやその多くのバリエーション(ART、Auto-CoTなど)のようなシンプルな出力構造は、LLMのパフォーマンスを向上させることが示されている。GPT-4のようなより強力なLLMの出現は、さらに豊かな構造を可能にし、ガイダンスによってその構造をより簡単に、より安価にすることができます。

特徴

  • Handlebarsのテンプレートに基づいた、シンプルで直感的な構文です。
  • 複数世代、選択、条件分岐、ツール使用など、豊富な出力構造。
  • Jupyter/VSCode Notebooksでプレイグラウンド的なストリーミングを行う。
  • スマートシードベースのジェネレーションキャッシング。
  • ロールベースのチャットモデル(例:ChatGPT)をサポートします。
  • 標準的なプロンプトよりも高速化するガイダンスアクセラレーション、プロンプトの境界を最適化するトークンヒーリング、フォーマットを強制する正規表現パターンガイドなど、Hugging Faceモデルとの容易な統合を実現。
kun432kun432

colaboratoryで。

!pip install guidance
import os
os.environ["OPENAI_API_KEY"] = "xxxxxxxxxx"
kun432kun432

プロンプトのテンプレート

import guidance

guidance.llm = guidance.llms.OpenAI("text-davinci-003")

program = guidance("""{{product}}を作る会社にふさわしい会社名を5つ挙げてください。箇条書きで。

{{gen}}
""")

output = program(product="靴下")
  • guidanceでテンプレートを渡すとProgramオブジェクトが作成される
  • プロンプトにはテンプレート変数を含めることができる。{{変数名}}となる。
  • Programオブジェクトにテンプレート変数を渡すと実行される。
  • 出力は{{gen}}タグを使う

実行すると以下となる。

靴下を作る会社にふさわしい会社名を5つ挙げてください。箇条書きで。

1. ブーツスタイル
2. ブーツマスター
3. ブーツワークス
4. ブーツファクトリー
5. ブーツクラフト

結果はとりあえず標準出力にどうやら出力されている様子。上記では表現できていないが、レスポンスはストリーミングで返ってくる。あとテンプレート変数およびgenタグが展開される箇所はカラーリングされて表示される。

LLMへの生成に関する設定、例えばtemperatureなどはgenタグの中に追加することができる。

import guidance

guidance.llm = guidance.llms.OpenAI("text-davinci-003")

program = guidance("""{{product}}を作る会社にふさわしい会社名を5つ挙げてください。箇条書きで。

{{gen temperature=0.7 max_tokens=20}}
""")

output = program(product="靴下")

結果

靴下を作る会社にふさわしい会社名を5つ挙げてください。箇条書きで。


1.ブーツバンド
2.つま先ファクト

が、guidance.llmを読み込む際にも設定できるみたい。ただし、今回の例だとmax_tokensはそこには設定できない。

import guidance

guidance.llm = guidance.llms.OpenAI("text-davinci-003", temperature=0.7)

program = guidance("""{{product}}を作る会社にふさわしい会社名を5つ挙げてください。箇条書きで。

{{gen max_tokens=20}}
""")

output = program(product="靴下")

結果

靴下を作る会社にふさわしい会社名を5つ挙げてください。箇条書きで。


1. ブーツ・ワークス
2. ブーツ・ス

それぞれのオプションを見てみる。

https://github.com/microsoft/guidance/blob/main/guidance/llms/_openai.py#L70-L74

https://github.com/microsoft/guidance/blob/main/guidance/library/_gen.py#L16-L58

guidance.llmを読み込む際に設定できるのは、APIキーとかキャッシュ要否とかの基本となる設定で、genタグで設定するのがLLM生成時のオプション、と考えればよい。

temperatureだけが両方で指定できてるのが微妙なんだよな・・・

このスクラップは2023/10/13にクローズされました