LangChain Models機能について


はじめに

本日はLngchainの6つの機能のうちの1つであるModelsについて解説していきます。

Model機能とは

様々なAIモデルを切り替えたり組み合わせたりできる機能で、現在、大規模言語モデル(LLMs)、チャットモデルズ、テキストエンベリングモデルズに対応しています。

LLMs

LLMsはオープンAIのGPT-3.5テキストダヴィンチ003やGoogleのPlan T5、Plan T5XLなどのモデルが含まれます。
↓以下対応モデル
AI21
Aleph Alpha
Anthropic
Azure OpenAI LLM Example
Banana CerebriumAI LLM Example
Cohere
DeepInfra LLM Example
ForefrontAI LLM Example
GooseAI LLM Example
GPT4All
Hugging Face Hub
Llama-cpp
Manifest
Modal
OpenAI
Petals LLM Example
PromptLayer OpenAI
Replicate
SageMakerEndpoint
Self-Hosted Models via Runhouse
StochasticAI
Writer

ChatModels

ChatModelsはLLMsを使用したチャット専用のモデル(例: チャットGPTシリーズ)です。

Embedding Models

これは自然言語の文章を何らかの空間におけるベクトルにするモデルです。例えば”フリーランス”という単語と関連度の高いキーワードを生成したいとします。この時”エンジニア”と”猫”のどちらかの単語がより関連度が高いですかという問題があったとします。私たちは直感的にエンジニアの方が猫よりも関連度が高いと思い浮かべることができますが、機械の場合自然言語の状態だと関連度を計算することは難しいことです。そこでEmbeddingを行い、自然言語をベクトル化すなわち数値化することで単語と単語の間の距離から関連度を求めることができます。

Model機能の利用

様々なLLMs、チャットモデルズ、テキストエンビディングモデルズを使用できます。これらの機能は、異なるモデルを組み合わせて使いたい時に非常に便利です。

Pythonを用いた具体的な実装方法

環境構築

まず、環境構築として、LangChainとOpenAIのライブラリを用いるため、以下のコマンドを実行しましょう。

!pip3 install langchain openai

次に、APIキーを設定します。「your openai_API_key」の部分は、ご自身のAPIキーを入れてください。

import os

os.environ["OPENAI_API_KEY"] = "your openai_API_key"

LLMsの使い方

LMsを使うためには、OpenAIのモデル名を指定して、次のような書き方でモデルを実行できます。

from langchain.llms import OpenAI 

llm = OpenAI(model_name="text-davinci-003") 
llm("ITエンジニアについて30文字で教えて。")]

見ての通り、非常にシンプルな書き方で記述できます。実行すると以下のように表示されます。

ITエンジニアは、コンピューターやネットワークなどの技術を活用してソフトウェアを開発・保守する仕事をする人。

Chat Modelsの使い方

Chat Modelsでは、Langchain内の「ChatOpenAI」というものを使います。
そして、Langchainが定義するデータ型を使って実行します。
ここでは、AIに「日本語で回答して。」と指示し、人が「ITエンジニアについて30文字で教えて。」と入力します。

from langchain.chat_models import ChatOpenAI
from langchain.schema import (
    SystemMessage,
    HumanMessage,
)

chat = ChatOpenAI(model_name="gpt-3.5-turbo")
chat([
	SystemMessage(content="日本語で回答して。"),
	HumanMessage(content="ITコンサルタントについて30文字で教えて。"),
])

こちらを実行すると、以下のような回答が出てきます。

AIMessage(content='ITコンサルタントは、情報技術の専門家で、ビジネスのITニーズを解決します。', additional_kwargs={})

Text Embedding Modelsの使い方

次に、Text Embedding Modelsの使い方を説明します。
まずは、エンベディングをするために必要な「tiktoken」というパッケージをインストールする必要があります。
以下のコマンドを実行しましょう。

!pip3 install tiktoken

インストール完了後、次のように記述してみてください。

from langchain.embeddings import OpenAIEmbeddings

embeddings = OpenAIEmbeddings()
query_result = embeddings.embed_query("ITコンサルタントについて30文字で教えて。")

print(query_result)

この場所では、"ITエンジニアについて30文字で教えて。"という文章を、数値化して表現しています。
以下のように、先ほどの文章が数値化されていることがわかります。

[[-0.007272669579833746, 0.00032592954812571406, ...]

ここでは、OpenAIのエンベディングモデル「text-embedding-ada-002」を使用しています。ただし、APIの利用料が別途かかることに注意してください。
なお、このモデルのベクトルは何次元なのか疑問に思った方もいるかもしれません。次のプログラムを実行して出力してみましょう。

print(len(query_result))

結果としては、「1536次元」であるということがわかりました。

1536

終わりに

次回はPrompt機能について解説してまいりますので引き続きよろしくお願いします!

この記事が気に入ったらサポートをしてみませんか?