0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【生成AI入門 LangChain×OpenAI API】レスポンスをストリーミングで表示することでUX向上

Posted at

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)

誰かの参考になれば幸いです。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?