🫠

【初心者】LLMって何よ

2025/02/03に公開

状況

  • よく聞く「LLMに繋ぐ」とか「LLMを使う」という会話の「LLM」ってちゃんと理解していないなと思ったので改めて学習
  • 勉強前の理解:大量のデータを扱うプロダクト?のこと?(笑)

内容

エンジニア業界で「LLM」というと、通常 「Large Language Model(大規模言語モデル)」 の略

LLM(Large Language Model)とは?

  • LLM は、膨大なテキストデータを学習して、人間のように文章を生成したり、質問に答えたり、コードを補完したりする AI(人工知能)の一種
  • テキストを理解し、文章を生成するための AIモデルそのもの
    例:GPT-4、Claude、Gemini など

※「LLMに繋ぐ」「LLMを使ってアプリを動かす」という場面で使われるのは、 LLMをAPIやシステムと連携する技術 が関わっているから


「LLMに繋ぐ」とは?

(1) LLMをAPIとして活用

  • LLMは スタンドアローンのAI ではなく、通常は APIとして提供 され、アプリケーションやシステムに組み込む形で使われる
    例:LLMをAPIとして使う流れ
    1. ユーザーがアプリを操作
    2. アプリが LLM API にリクエストを送る
    3. LLM が応答を生成し、アプリに返す
    4. アプリがユーザーに回答を表示
  • 「LLMに繋ぐ」とは、このAPI連携を指すことが多い

(2) LLMを使う具体例

  • チャットボットのバックエンド(カスタマーサポートなど)
  • ドキュメント要約・翻訳アプリ
  • コード補完ツール(GitHub Copilot など)
  • 検索エンジンの高度化(LLMを組み込んだ検索)
  • 医療・法律・金融向けのAIアシスタント

例えば、「LLMに繋ぐ」= ChatGPT API をシステムに組み込み、ユーザーの問い合わせに自動応答させる という意味で使われることがある


LLMをアプリに組み込む方法

  • アプリケーションで LLM を利用するには、一般的に以下の方法がある

(1) OpenAI API(GPT系)を利用

OpenAI の API(ChatGPT、GPT-4 など)を使って、アプリに組み込む

  • 使い方:
    • HTTPリクエストを送る(POST
    • 入力テキストを送信 → AIが応答を生成
    • 応答をアプリに返す

(例)Railsアプリで LLM API を呼び出す

require 'net/http'
require 'json'

uri = URI("https://api.openai.com/v1/chat/completions")
req = Net::HTTP::Post.new(uri, 'Content-Type' => 'application/json')
req['Authorization'] = "Bearer #{ENV['OPENAI_API_KEY']}"

req.body = {
  model: "gpt-4",
  messages: [{role: "user", content: "こんにちは!"}]
}.to_json

res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }

puts JSON.parse(res.body)["choices"][0]["message"]["content"]

このコードを実行すると、OpenAI の API に「こんにちは!」を送信し、LLM が応答を生成

(2) 自前で LLM をホスティング

APIを使わず、 自社サーバー上に LLM をホスト して動かす方法も

  • オープンソースのLLMを活用

    • LLama 2(Meta)
    • Mistral(軽量&高性能)
    • GPT-4all(ローカル動作可能)
  • メリット

    • APIコスト不要
    • データを外部に送らないのでセキュリティが強い
  • デメリット

    • GPUなどのハードウェアが必要
    • モデルのチューニングや管理が必要

(例)Pythonで Llama 2 をローカル実行

from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "meta-llama/Llama-2-7b-chat-hf"
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)

input_text = "こんにちは!"
input_ids = tokenizer(input_text, return_tensors="pt").input_ids

output = model.generate(input_ids)
print(tokenizer.decode(output[0]))

これは クラウドに頼らず、ローカル環境で LLM を動かす


まとめ

「LLM=生成AI」ではなく、生成AIの一部

  • LLM はテキスト生成に特化した AIモデル
    • 生成AIには 画像・音声・動画なども含まれる
  • 「LLMに繋ぐ」とは、APIを活用することが多い
    • LLMは 単独ではなくAPI経由で利用される
    • アプリ → API → LLM の流れで動作する

所見

  • ようやくスッキリしました。これからはLLMという単語に恐れることなく会話していきます!

Discussion