見出し画像

GPT-4oをLangchainで動かす

データサイエンティストのせきとばです。
GPT-4oが発表されましたね。

その精度は競合LLMの中でも群を抜いています。

im-also-a-good-gpt2-chatbotがGPT-4oのテスト版


APIも公開されたので早速LangChainで動かしていきます。

APIキー取得

以下公式サイトのコンソールに登録 OR ログインします。

https://platform.openai.com/

Get API Keysをクリックします。

APIキー名入力後に表示されたAPIキーをコピーして控えます。

GPT-4oのAPIモデル名

APIモデル名は以下で確認できます。

LangChainでGPT-4o実装

まず、langchain-openaiモジュールをインストールします。

%pip install -qU langchain-openai

APIキーを設定します。

import os
os.environ["OPENAI_API_KEY"] = "あなたのAPIキー"

以下の要領で実装します。

from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate

chat = ChatOpenAI(temperature=0, model_name="gpt-4o-2024-05-13")

system = (
    "You are a helpful assistant that translates {input_language} to {output_language}."
)
human = "{text}"
prompt = ChatPromptTemplate.from_messages([("system", system), ("human", human)])

chain = prompt | chat
result = chain.invoke(
    {
        "input_language": "English",
        "output_language": "Japanese",
        "text": "I love Python",
    }
)
print(result)

出力結果

Here's the Japanese translation of "I love Python":
私はPythonが大好きです。
Watashi wa Python ga daisuki desu.

Explanation:
- 私 (Watashi) means "I"
- は (wa) is a topic marker indicating the topic of the sentence
- Python is written in katakana as パイソン (Paison) since it's a foreign word, but it's common to keep it in English
- が (ga) is a subject marker indicating the subject of the sentence
- 大好き (daisuki) means "love" or "really like"
- です (desu) is a polite sentence-ending

Streaming

Streamingも対応しています。

chat = ChatOpenAI(temperature=0.3, model_name="gpt-4o-2024-05-13")
prompt = ChatPromptTemplate.from_messages(
    [("human", "ワンピースに登場する七武海を教えて")]
)
chain = prompt | chat
for chunk in chain.stream({}):
    print(chunk.content, end="", flush=True)

出力結果

『ワンピース』に登場する七武海(しちぶかい)は、世界政府に認められた海賊たちの集団で、以下のキャラクターたちがそのメンバーとして知られています。ただし、物語の進行に伴いメンバーが変わることもあります。

1. **ドンキホーテ・ドフラミンゴ**
2. **ジュラキュール・ミホーク**
3. **バーソロミュー・くま**
4. **ボア・ハンコック**
5. **ゲッコー・モリア**
6. **クロコダイル**
7. **トラファルガー・ロー**
8. **エドワード・ウィーブル**
9. **ジンベエ(元メンバー)**
10. **マーシャル・D・ティーチ(元メンバー)**

これらのキャラクターはそれぞれ独自の背景や能力を持ち、物語の中で重要な役割を果たしています。なお、七武海の制度自体も物語の進行に伴い変化していくため、最新の情報については原作や公式情報を確認することをお勧めします。

LLMの選択肢が増えるとLangChainの活用シーンも増えていきそうです。

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