💭

【AI_18日目_2回目】大規模言語モデル1冊目

2024/11/07に公開

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

背景

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

LangChain

・LangChain・・・LLMを使用したアプリケーション開発のフレームワーク
→知らなかったのですが、Pythonだけではなく、JavaScript/ TypeScriptでもLangChainの実装ができるんですね。
※Pythonの方が活発ではあるとのことです。(Pythonしか提供がない機能もあるとのこと)

・LangChainの特徴の2つ
→LLMに必要な部品を使いやすくまとめてる
→特定のユースケースに特化した機能の提供

・LLMのアプリケーション例
→chatgptのような対話型アプリケーション
→文章をまとめるツール
→社内の文章などのQ&Aアプリ
→AIエージェント

・LangChain以外のフレームワーク
→LlamaIndex
→Semantic Kernel
→Guidance
→LangChainの新しい機能を提供する速度が凄まじいらしく、LangChainの最新を追うことで、トレンドを追うことにも繋がるとのことでした。

Language models

・Language models・・・LangChainでの言語モデルの使用方法を提供するモジュールで、ざっくりLLMをLangChain的な感じで使えるようにするものとのことでした。

・LLMs・・・1つのテキストに対して1つのテキストの出力を返すモジュール

from langchain.llms import OpenAI

llm = OpenAI(model_name="text-davinchi-003", temperature=0)

result = llm("自己紹介をしてください。")
print(result)

エラー

/usr/local/lib/python3.10/dist-packages/langchain/llms/__init__.py in __getattr__(name)
    543 
    544 def __getattr__(name: str) -> Any:
--> 545     from langchain_community import llms
    546 
    547     # If not in interactive env, raise warning.

ModuleNotFoundError: No module named 'langchain_community'

---------------------------------------------------------------------------
NOTE: If your import is failing due to a missing package, you can
manually install dependencies using either !pip or !apt.

To view examples of installing some common dependencies, click the
"Open Examples" button below.
---------------------------------------------------------------------------

原因:langchain_communityがない

対処:langchain_communityをインストールする

!pip install langchain_community

次に以下のようなエラーが出る

ValidationError: 1 validation error for OpenAI
  Value error, Did not find openai_api_key, please add an environment variable `OPENAI_API_KEY` which contains it, or pass `openai_api_key` as a named parameter. [type=value_error, input_value={'model_name': 'text-davi...ne, 'http_client': None}, input_type=dict]

原因:OpenAIのAPIキーを設定していないのが原因。

対処法:APIキーを設定する

import os
os.environ["OPENAI_API_KEY"] = "APIキーを入れる"

次のエラー内容

NotFoundError: Error code: 404 - {'error': {'message': 'The model `text-davinchi-003` does not exist or you do not have access to it.', 'type': 'invalid_request_error', 'param': None, 'code': 'model_not_found'}}

原因:過去のモデルがないことが原因

対処法:現在存在するモデルを使用する

from langchain.llms import OpenAI

llm = OpenAI(model_name="gpt-4o-mini", temperature=0)

result = llm("自己紹介をしてください。")
print(result)

次のエラー内容

APIRemovedInV1: 

You tried to access openai.ChatCompletion, but this is no longer supported in openai>=1.0.0 - see the README at https://github.com/openai/openai-python for the API.

You can run `openai migrate` to automatically upgrade your codebase to use the 1.0.0 interface. 

Alternatively, you can pin your installation to the old version, e.g. `pip install openai==0.28`

A detailed migration guide is available here: https://github.com/openai/openai-python/discussions/742

エラー原因:古い呼び方をするなというのが原因のようです。

対処法:LangChainの公式サイトに記載されている呼び方に修正する

https://python.langchain.com/docs/integrations/chat/openai/

# LangChainのインストール
!pip install langchain-openai

# API Key
import os
os.environ["OPENAI_API_KEY"] = "APIキーを入れる"

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="gpt-4o-mini",
    temperature=0,
)

result = llm("自己紹介をしてください。")
print(result)

実施結果

content='こんにちは!私はAIアシスタントのChatGPTです。さまざまな質問に答えたり、情報を提供したり、会話を楽しんだりするために設計されています。趣味や興味、学びたいことについてお話しするのが好きです。何か特定のことについて知りたいことがあれば、ぜひ教えてください!'
以下略...

temperature・・・大きいほど出力がランダムになり、小さいほど決定的になるパラメータとのことです。

・Chat models・・・単に1つのテキストを入力とするのではなく、チャット形式のやり取りを入力して応答を得るようになっているとのことです。

https://python.langchain.com/v0.1/docs/modules/model_io/chat/quick_start/

やはり案の定記載の仕方は、新しくなっていました。

from langchain_core.messages import HumanMessage, SystemMessage

messages = [
    SystemMessage(content="You're a helpful assistant"),
    HumanMessage(content="こんにちは!私は投資ロウトと申します!"),
   以下適当な会話続く...
]

result = llm(messages)
print(result.content)

LangChainのメッセージは以下の分類
・SystemMessage・・・role="system"
・HumanMessage・・・role="user"
・AIMessage・・・role="assistant"

・Callback・・・LangChainでCallback機能を使うと、Chat Completions APIのストリーミングなどの対応をすることも可能とのことでした。

https://python.langchain.com/v0.1/docs/modules/callbacks/

from langchain_core.callbacks import StdOutCallbackHandler
from langchain.chains import LLMChain
from langchain_openai import OpenAI
from langchain_core.prompts import PromptTemplate

handler = StdOutCallbackHandler()
llm = OpenAI(model_name="gpt-4o-mini", temperature=0)
prompt = PromptTemplate.from_template(
    template="自己紹介をしてください"
)

chain = LLMChain(llm=llm, prompt=prompt, callbacks=[handler])
response = chain.invoke({})
print(response)

エラー内容

NotFoundError: Error code: 404 - {'error': {'message': 'This is a chat model and not supported in the v1/completions endpoint. Did you mean to use v1/chat/completions?', 'type': 'invalid_request_error', 'param': 'model', 'code': None}}

エラー原因:公式ドキュメントも古いバージョンで書かれており、「gpt-4o-mini」が反映される前の記載方法でした。

解決方法

from langchain_core.callbacks import StdOutCallbackHandler
from langchain.chains import LLMChain
from langchain_openai import ChatOpenAI
from langchain_core.prompts import PromptTemplate

handler = StdOutCallbackHandler()
llm = ChatOpenAI(model_name="gpt-4o-mini", temperature=0)
prompt = PromptTemplate.from_template(
    template="自己紹介をしてください"
)

chain = LLMChain(llm=llm, prompt=prompt, callbacks=[handler])
response = chain.invoke({})
print(response)

ただ表示の感じが少しストリーミングと違い、4o-miniの方は一瞬だったので、少し怪しいかもしれません。

と短いですが一旦以上で学習を区切りたいと思います。ご精読ありがとうございました。焦らずコツコツいきたいと思います。

Discussion