LLM アプリごった煮

読んで良かった資料

LlamaIndex(旧GPT Index)

日本語のPDFをデータを使う場合

chain の種類に関して書いてある

試してみたいやつ

ドキュメント要約系のタスクに関して
ドキュメントの章を特定して分割して、章毎の要約をしなくいとあまり意味がない。

Sequential Chain

embedding はこのあたりが役立った

回答できるようにchunkを作る。

書きたい記事を書かせるには embeddingによる元文章の取得 + チェーン で積み上げる感じになると思っています。
MLやプロンプトエンジニアリング領域よりは、アプリ寄りの努力が必要だと思っています。
ex. 会社の強みをアピールする記事を書いてください。
- 会社の強みを教えてください -> embeddingによる強み文章の取得 + question に沿った整形
- 1 を具体的に説明してください。 -> チェーン + embeddingによる強み文章の取得 + question に沿った整形
- 1 によって、サクセスした事例を教えてください。 -> チェーン + embeddingによるサクセスした事例の文章の取得
- 1 ~ 3 を踏まえて、アピールする記事を書いてください。 -> チェーン + question に沿った整形

説明ジェネレーター
機能
- サービスの機能を書いた文章をアップロードしたら以下を生成する
- 機能によってどんなメリットがもたらされるか
- どんな人にぴったりなのか
- ユースケース
- 使ってみた体験談
- 生成した説明文から説明動画を生成する

監査機能の実装
-
API マネジメントと監査ログの両方の実装の必要がある
-
質問(LLM)の token 数
-
embedding 利用料金
参考:
オプトアウト
- 無印OpenAIのAPIを使って送った情報に関してはデフォルトで学習されない
MS の監視
- 「マイクロソフトが監視していないという証明」が出してもらえるのか -> ない

faiss で id 付与 (できたけれど、その先に問題がある。)

faiss から id 削除 (langchain) できるけれど、idがずれてしまうらしい。
既存のidがずれてしまったら、削除できないのでアプリで担保。
they support removal with remove. Note that this shrinks the index and changes the numbering.
https://github.com/facebookresearch/faiss/wiki/Faiss-indexes

chat 機能の実装

Function Calling

何となく使っているので理解したいやつ

function calling と stream

Agent実装

token数・推薦数
- 上から回答5つを使えば良い

loop する function call を止める

function calling の引数を nest する

指示に従わせる

蒸留

RecursiveRetriever

評価

Agent

ReAct実装
- https://note.com/npaka/n/n99153644e550
- https://logmi.jp/tech/articles/329010
- https://qiita.com/sakue_103/items/49d894f1edaa7e995b8c#応用編react
- https://qiita.com/kash203/items/91e1cd45f5b0ef41b3d0
- thought, action, action_input, observation, result から変にカスタムすると action してくれなくなった
- observation を action_result とかに変更したら...
- question に対しての result が安定した
- observation に嘘つかれることが多い

ReActとCoT-SCを状況に応じて切り替えることが最も望ましい
内部知識と外部知識を組み合わせる:
CoT-SCには内部知識によって誤りを犯してしまうため、ReActとCoT-SCの組み合わせを提案する。
ReActで所定のステップ以内に回答を返せなかった場合はReAct→CoT-SCに切り替えて、CoT-SCが所定の回数以下で過半数の回答にならなかった場合、CoT-SC→ReActに切り替える、といった方法で組み合わせる。
CoT-SCをpromptとして与えたLLMとReActをpromptとして与えたLLMを用意しておいて、上記の条件に応じて制御していたのではないでしょうか。

debate
同じLLM を使ったり、異なるLLMを使ったりする方法がある。

function calling の実行結果の型がPydanticModelであることににこだわる理由:
- json 化して結果をmessageの中に入れることができる
- テキスト化された状態からparseできる
- 関数1つでjson化できることを保証できる

プロンプト評価

RAG

プロンプト

Azure Seach AI の RAG

OpenAI ポリシー
OpenAI API | Azure OpenAI | Azure OpenAI 乱用モニタリング申請 | |
---|---|---|---|
モデルの改善に用いられる | いいえ ※1 | いいえ ※4 | いいえ ※4 |
監査用途に30日保持される | はい ※2 | はい ※5 | いいえ ※5 |
監査用途で確認される可能性 | あり得る ※2 | あり得る ※5 | ない ※5 |
安全性のためのフィルタリングが用いられる | ある ※3 | ある ※5 | ある ※5 |
※1
API_privacy_1.png
API_privacy_2.png
API_privacy_3.png
※2
API_privacy_4.png
※3
API_privacy_5.png
※4
AOAI_privacy_1.png
※5
AOAI_privacy_2.png

OpenAI ポリシー 公式以外の参考

vision のtoken

プロンプト組み立て

評価:

OpenAI model の挙動に関して書いてある

Reasoning に関して

深いRAG
Corrective RAG が回答するとよさそう。