概要
・LangChainでOpen AIのAPIをコールするためのPythonコードを紹介します。
・OpenAIの公式サイトからAPIキーを発行していることが前提です。
コード
import os
from langchain_core.messages import HumanMessage, SystemMessage
from langchain_openai import ChatOpenAI
# OpenAIのAPIキーを設定
os.environ["OPENAI_API_KEY"] = "{APIキーを入力してください}"
# OpenAIのインスタンスを作成
model = ChatOpenAI(model="gpt-4", max_tokens=200)
messages = [
SystemMessage(content="日本語でチャットをしてください。ハルシネーションを起こさないで。"),
]
# チャットの実行
print("Chat with GPT-4. Type 'exit' to end the conversation.")
while True:
user_input = input("You: ")
if user_input.lower() == "exit":
break
if not user_input:
print("メッセージを入力して下さい。")
continue
messages.append(HumanMessage(content=user_input))
result = model.invoke(messages)
print(f"GPT-4: {result.content}")
解説コメントアウト付き
import os
from langchain_core.messages import HumanMessage, SystemMessage
from langchain_openai import ChatOpenAI
# OpenAIのAPIキーを設定
os.environ["OPENAI_API_KEY"] = "{APIキーを入力してください}"
# 環境変数 "OPENAI_API_KEY" にAPIキーを設定し、OpenAI APIにアクセスする際に認証を行えるようにしています。
# OpenAIのインスタンスを作成
model = ChatOpenAI(model="gpt-4", max_tokens=200)
# ChatOpenAIクラスを使って、GPT-4モデルを使用するインスタンスを作成します。
# max_tokens=200は、生成される応答の最大トークン数を設定しています。
# 会話に含まれるメッセージリストを初期化
messages = [
SystemMessage(content="日本語でチャットをしてください。ハルシネーションを起こさないで。"),
]
# 最初のメッセージとしてSystemMessageを設定しています。
# ここでは、「日本語でチャットをしてください」と指示することで、チャットが日本語で進行するようにしています。
# また、「ハルシネーションを起こさないで」と明示して、AIの誤った応答を減らすよう促しています。
# チャットの実行
print("Chat with GPT-4. Type 'exit' to end the conversation.")
# ユーザーに対して、チャットを開始することを示すメッセージを出力します。
# 'exit'と入力することで会話を終了できることを伝えています。
while True:
user_input = input("You: ")
# ユーザーからの入力を受け取ります。
if user_input.lower() == "exit":
break
# 'exit'と入力された場合、whileループを終了してプログラムを終了します。
if not user_input:
print("メッセージを入力して下さい。")
continue
# 入力が空の場合、再度メッセージを入力するように促します。
# ユーザーからのメッセージを追加
messages.append(HumanMessage(content=user_input))
# ユーザーからの入力をHumanMessageとしてメッセージリストに追加します。
# モデルにメッセージを送信して応答を生成
result = model.invoke(messages)
# ここでChatOpenAIインスタンスを使って、モデルにメッセージリストを送信し、AIからの応答を受け取ります。
# AIからの応答を出力
print(f"GPT-4: {result.content}")
# モデルからの応答を画面に出力します。