見出し画像

MS guidance をシュッと触ってみる

LLM を組み込むといえば LangChain が有名ですね。

しかしながら MS がシュッと似たようなツールを出してきましたね、、、
ので、とりあえずふわっと GitHub 眺めて軽く触れてみました。

Guidance enables you to control modern language models more effectively and efficiently than traditional prompting or chaining. Guidance programs allow you to interleave generation, prompting, and logical control into a single continuous flow matching how the language model actually processes the text. Simple output structures like Chain of Thought and its many variants (e.g. ART, Auto-CoT, etc.) have been shown to improve LLM performance. The advent of more powerful LLMs like GPT-4 allows for even richer structure, and guidance makes that structure easier and cheaper.

https://github.com/microsoft/guidance

ふむふむ。とりあえず DeepL 先生に翻訳してもらう。

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

特徴

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

www.DeepL.com/Translator(無料版)で翻訳しました。

https://github.com/microsoft/guidance

なるほど?

とりあえず使ってみましょということで GitHub の notebook を物色
https://github.com/microsoft/guidance/tree/main/notebooks

シュッとできそうなやつを Colab で動かしてみる

!pip install guidance

からの

import os
os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY"

からの

import guidance
import re

guidance.llm = guidance.llms.OpenAI("gpt-3.5-turbo")

ポン(サンプルの文言を適当に変えただけ)

experts = guidance('''
{{#system~}}
あなたは類まれなる才能をもったコンシェルジュです。
{{~/system}}

{{#user~}}
私の要求を満たしてください:
{{query}}
要求に答えるのに最適な世界レベルで有名なエキスパート(過去、現在において)を3名挙げてください。
まだ、この質問には答えないでください。
{{~/user}}

{{#assistant~}}
{{gen 'expert_names' temperature=0 max_tokens=300}}
{{~/assistant}}

{{#user~}}
いいですね、では、これらのエキスパートが共同で匿名の回答を書いたかのように、質問に答えてください。
{{~/user}}

{{#assistant~}}
{{gen 'answer' temperature=0 max_tokens=500}}
{{~/assistant}}''')
experts(query='極上の映画、もしくはアニメーションをプレゼンして私の興味を引いてください', caching=False)

結果

実行結果

いいですねぇ。

ただ使いやすいかというとどうなの?
という感じ。

Syntax は難しくない(が、読みにくい)けど現状とりたてて使いたくなるような感じではないかなぁ。

機能的にはこの辺が良さそうなのかも?
- Guidance acceleration
- Token healing

notebook が提供されてるからこれから ChatGPT 使い始める人とかには使いやすいような印象はある。

とはいえまだ出たばかりだし MS さんのプロジェクトだし今後に期待という感じでしょうかね。

全部の機能触ってないしドキュメントもふわっと読んだだけなのであれですが

シュッと触るのが目的だったのでおしまい。



たまに差分更新を追ってたりします


いいなと思ったら応援しよう!