
2025.02.12
職員一人あたり52時間の残業削減に成功 kintone導入がもたらした富士吉田市の自治体DX“変革”ハウツー
リンクをコピー
記事をブックマーク
大嶋勇樹氏:ここまでGitHub上でまずChatOpenAIクラスを探してソースコードを読んでみたわけなんですが、ChatOpenAIクラスの見つけ方自体は、ほかにもいろいろなやり方があります。
今はなんとなくLangChainのリポジトリのトップからたどって、がんばって「なんとなくここかな」と探してきたんですが、ほかの探し方としては、例えばGitHubの検索欄を使う方法が1つあります。
(画面を示して)検索欄に「ChatOpenAI」と入力して検索すると、リポジトリの中からヒットする箇所を見つけてくれます。
ただGitHub上の検索欄を使って検索する方法にはちょっと欠点があって、最新版のソースコードしか検索できないようになっています。
なんとなく「最新版だとここにあるから、自分が使っている過去のバージョンでもここにあるんじゃないかな」と推測する程度に使うことはできるんですが、見つけたものをそのまま読むと、自分の使っているバージョンは実装が違ってハマるようなこともあるので、その点はご注意ください。
目安として見つけたら、もう一度該当のバージョンに戻って、そのディレクトリを見にいくのがいいと思います。
ほかには、Pythonのプラグインが入っていないといけないかもしれませんが、「Visual Studio Code」や「PyCharm」でChatOpenAIをimport内で使っている箇所を右クリックして「定義へ移動」とすると、ソースコードを開くことができます。
すると、ChatOpenAIのローカルにインストールした、ダウンロードした実体が開かれて読むこともできます。これはローカルの.venvというディレクトリ以下に置いているわけですが、そこのファイルは開かれているわけですね。
ちなみに、ローカルでこんなふうに開いた場合、「なんとなくここの挙動が気になる」と思ったら、printを仕込んであげると、実際に挙動が変わって、内容を表示することもできます。
あとはgrepコマンドを使うとかですね。例えば「grep -rn ChatOpenAI」としてChatOpenAIというキーワードを、「.venv/lib/python3.11/site-packages/langchain」としてLangChainのパッケージ以下を検索してあげると、ヒットする行が見つかります。
おそらくクラスだから、さらに「| grep class」とかしてあげれば、このクラス、ChatOpenAIがopenai.pyの131行目に定義されていることを、検索して見つけることもできます。
ということで、ここまで最初の例として、ChatOpenAIクラスの2つの呼び出し方を見てきました。ここまでのポイントとしては、まずソースコードをGitHubで見る時は該当バージョンに切り替えるのはけっこう大事というか、特にLangChainのようにアップデートが激しいものについては、確実にやったほうがいいかなと思います。
あとはchat(messages)が、__call__という特殊メソッドの呼び出しであることや、「class ChatOpenAI(BaseChatModel)」が継承であるといったPythonの知識であったり、ローカルでエディタの定義の参照やgrepコマンドを使うのも役立つということを見てきました。
ということで、最初に簡単な例を見てきたんですが、この後もう少し、Chat APIについてLangChainで「ちゃんと」使うには、ということを見ていきます。
いくつか質問をもらっているので、いったん回答します。
1つもらったのが「そもそもの質問ですみません。『OpenAI Python』じゃなくてLangChainを使うメリットは何でしょうか?」ということです。今のサンプルコードであればOpenAI Pythonを使えばいいんですが、LangChainはOpenAI Pythonよりもはるかに多機能で、すごくいろいろなことができるようになっています。
なので、LLMを使ってアプリケーションを作りたい、例えば独自データにQ&Aするものを作りたいとかいろいろあると思いますが、そういう時はLangChainのほうが機能が充実していて、使えるものが多いです。
もう1つ質問をもらったのが、「なぜ同じ操作を行っているのにpredictを使用しているのでしょうか?」ということです。これはすみません、僕が呼び出し方が2つあるのを知って、「きっとこういうつながりになっているんだろうな」と想像してソースコードを見て、(それが)ちょうどこういう勉強会の題材として良かったから採用しただけですね。
あとは、LangChainの中のソースコードをいろいろ読んでいった時に、モデルの呼び出し方が場所によっていろいろ使い分けられたりしていると思うので、そういう時に「いろんな呼び出し方があるんだな」と気づくとかはありますね。質問ありがとうございます。
(次回につづく)
関連タグ:
大嶋勇樹氏が解説する「OpenAIの文書生成API」の基本 モデルの種類、APIの種類と違い、今使うべきもの
「chat(messages)」と「chat.predict」は同じ挙動を示すのか? ChatOpenAIクラスの2つの呼び出し方の互換性
「GitHub検索欄を使う」「定義から見る」「grepコマンドを使う」 「ソースコードを読む」以外のChatOpenAIクラスの見つけ方
LangChainの「Chain」や「Agent」を使う時は注意が必要 「Chat APIの形式を活かした実装かどうか」の確認方法
時間を溶かさないためにもLangChainの過去バージョンは確認しよう ネット上では公開されていないドキュメントの見つけ方
2025.02.06
すかいらーく創業者が、社長を辞めて75歳で再起業したわけ “あえて長居させるコーヒー店”の経営に込めるこだわり
PR | 2025.02.07
プロジェクトマネージャーは「無理ゲーを攻略するプレイヤー」 仕事を任せられない管理職のためのマネジメントの秘訣
2025.02.06
落合陽一氏や松尾豊氏の研究は社会に届いているか? ひろゆき氏が語るアカデミアの課題と展望
2025.02.05
「納得しないと動けない部下」を変える3つのステップとは マネージャーの悩みを解消する会話のテクニック
2025.01.07
1月から始めたい「日記」を書く習慣 ビジネスパーソンにおすすめな3つの理由
2025.02.10
A4用紙を持ち歩いて殴り書きでアウトプット コクヨのワークスタイルコンサルタントが語る、2種類のメモ術
2025.02.05
エンジニアとして成功するための秘訣とは? ひろゆき氏が語る、自由な働き方を叶えるアプリ開発とキャリア戦略
2025.02.04
日本企業にありがちな「生産性の低さ」の原因 メーカーの「ちょっとした改善」で勝負が決まる仕組みの落とし穴
2025.02.03
「昔は富豪的プログラミングなんてできなかった」 21歳で「2ちゃんねる」を生んだひろゆき氏が語る開発の裏側
PR | 2025.02.04
能登半島地震で自宅は全壊、「これでどうやってDXするねん」 被災したサイボウズ社員と支援者らが語る災害支援のノウハウ
2025.02.06
すかいらーく創業者が、社長を辞めて75歳で再起業したわけ “あえて長居させるコーヒー店”の経営に込めるこだわり
PR | 2025.02.07
プロジェクトマネージャーは「無理ゲーを攻略するプレイヤー」 仕事を任せられない管理職のためのマネジメントの秘訣
2025.02.06
落合陽一氏や松尾豊氏の研究は社会に届いているか? ひろゆき氏が語るアカデミアの課題と展望
2025.02.05
「納得しないと動けない部下」を変える3つのステップとは マネージャーの悩みを解消する会話のテクニック
2025.01.07
1月から始めたい「日記」を書く習慣 ビジネスパーソンにおすすめな3つの理由
2025.02.10
A4用紙を持ち歩いて殴り書きでアウトプット コクヨのワークスタイルコンサルタントが語る、2種類のメモ術
2025.02.05
エンジニアとして成功するための秘訣とは? ひろゆき氏が語る、自由な働き方を叶えるアプリ開発とキャリア戦略
2025.02.04
日本企業にありがちな「生産性の低さ」の原因 メーカーの「ちょっとした改善」で勝負が決まる仕組みの落とし穴
2025.02.03
「昔は富豪的プログラミングなんてできなかった」 21歳で「2ちゃんねる」を生んだひろゆき氏が語る開発の裏側
PR | 2025.02.04
能登半島地震で自宅は全壊、「これでどうやってDXするねん」 被災したサイボウズ社員と支援者らが語る災害支援のノウハウ
新人の報連相スキルはマネージメントで引きあげろ!~管理職の「他責思考」を排除~
2025.01.29 - 2025.01.29
【手放すTALK LIVE#45】人と組織のポテンシャルが継承されるソース原理 ~人と組織のポテンシャルが花開く「ソース原理」とは~
2024.12.09 - 2024.12.09
『これで採用はうまくいく』著者が語る、今こそ採用担当に届けたい「口説く」力のすべて
2024.11.29 - 2024.11.29
【著者来館】『成果を上げるプレイングマネジャーは「これ」をやらない』出版記念イベント!
2025.01.10 - 2025.01.10
片付けパパ対談【特別編】 整理術×行動術×メモ術で、仕事も人生も自在にデザイン!
2024.12.16 - 2024.12.16