🔖

【AI_25日目】大規模言語モデル1冊目

2024/11/04に公開

こんにちは投資ロウトです。

背景

AI開発ができるために大規模言語モデルについて理解を深めていきます。

進捗状況

少しずつ進めていっていますが、現在の進捗は以下になっています。

①要件定義:1冊
②設計:1冊
③システムビジネススキル:3冊 + 1冊目(keycloakが進行中(未マスト))
④インフラ:3冊
⑤フロントエンド:0冊、1冊(TailwindCSSが進行中(未マスト))
⑥AI:4冊
⑦テスト:0冊(単体テストが進行中)

はじめに

生成AIのプロジェクトで何から手をつけていけばいいかわからない人に、まず試してほしいのが、OpenAI APIとLangChainというフレームワークとのことです。これらを使いこなせることで、大規模言語モデルの基礎を理解し、サービスや業務システムを構築することができるとのことです。

大規模言語モデルでLLMでアプリケーション開発をする

(用語)
・プロンプト・・・ChatGPTへの入力のこと

(注意すべきこと)
・ChatGPTの回答は全て正しいわけではなく、事実と異なるハルシネーションには気を付ける必要があるとのことです。

・一度入力してしまった情報は他のクラウド上に保存されてしまい、データをなかったことにすることが原則的にできないとのことでした。

・ChatGPTは同じ入力でも同じ回答をしてくれるわけではないため、再現性のある動作をするかどうかはわからないとのことです。

(費用)
・月額20$(chatgpt)

(便利なプラグイン)
・ChatGPT PlusではPluginsという機能があり、それを元にWebPilotを使うと、Chatgptが学習していない時期のデータだったとしても、Web情報を元に回答をしてもらうことができるとのことでした。

・Advanced data analysisを使うと、GPT-4が生成したPythonコードなどを実際にサンドボックス上で動かすことができるとのことでした。

技術について

・LangChain・・・多くの開発者がつまづく課題についてモジュールを提供してくれるツール。

プロンプトエンジニアリング

プロンプトを使用する上で、アプリケーション開発者はjson形式や指定した情報を回答してほしいという問題に直面しますが、中々こちらの意図通りに回答をしてくれないということが往々にしてあるとのことです。

また逆にいうと、プロンプトエンジニアリングの知識を身につけると、LLMからの可能性を引き出すことができるというお話もありました。

プロンプトを渡す際に、テンプレート化させることも技法として多いとのことです。こうすることで、可変として渡し、命令と入力を分離するというのが一般的とのことでした。

〜〜〜してください(命令)

入力値:"""
{変数名}
"""

他には前提条件なども付与するとのことです。

〜〜〜してください(命令)

前提条件:"""
条件1:値
条件2:値2
"""

入力値:"""
{変数名}
"""

他にも出力形式を指定するやり方もあるとのことでした。

〜〜〜してください(命令)

出力は以下のようなJSON形式にしてください

"""json(`を3つにしてください(ブログの関係性上"としている))
{
 中身略
}
"""

入力値:"""
{変数名}
"""

そして上記からjson部分を正規表現部分で抽出してしまえば、LLMの出力を加工して画面に表示することもできるとのことでした。

・Zero-shotプロンプティング・・・プロンプトに例を与えずタスクを処理させること

命令文

入力データ

分類:

・Few-shotプロンプティング・・・いくつかデモンストレーションを与えることで、求める回答をしやすくすること

命令文

Q:例1
A:例1の解答例
Q:例2
A:例2の解答例
Q:実際に回答させたいもの
A:

・Zero-shot Chain of Thoughtプロンプティング・・・数学で個数の計算の長文問題などだと、上手く回答を出すことができなかったりしますが、「ステップバイステップで考えてみましょう。」というテキストを入れることで、上手く計算できるようにする手法。

問題文 + 「ステップバイステップで考えてみましょう。」

と一旦以上で学習を区切りたいと思います。ご精読ありがとうございました。焦らずコツコツ自分のペースで進めていきたいと思います。

Discussion