OpenAI APIのレスポンスをストリーミングで受信し、ログ出力するコードです。
前回の記事のコードを改良しています。
コード全体
import os
import env
from langchain_core.messages import HumanMessage, SystemMessage
from langchain_openai import ChatOpenAI
# OpenAIのAPIキーを設定
os.environ["OPENAI_API_KEY"] = env.OPENAI_API_KEY
# OpenAIのインスタンスを作成
model = ChatOpenAI(model="gpt-4o-mini", max_tokens=50)
messages = [
SystemMessage(content="日本語でチャットをしてください。ハルシネーションを起こさないで。"),
]
# チャットの実行
print("Chat with GPT-4o-mini. 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))
chunks = []
print("AI: ",end="")
for chunk in model.stream(messages):
chunks.append(chunk)
print(chunk.content,end = "", flush=True)
print()
前回から差分
モデルをストリーミングで呼び出し、結果を順次表示
まず主な差分はストリーミング機能の追加です。
chunks = []
print("AI: ",end="")
for chunk in model.stream(messages):
chunks.append(chunk)
print(chunk.content,end = "", flush=True)
print()
その他の差分は以下です。
APIキーの環境設定化
前回はハードコーディングしていましたが、環境設定にしました。
import env
# OpenAIのAPIキーを設定
os.environ["OPENAI_API_KEY"] = env.OPENAI_API_KEY
GPT4からGPT4o miniに変更
安いから。
model = ChatOpenAI(model="gpt-4o-mini", max_tokens=50)
誰かの参考になれば幸いです。