2024.10.21
お互い疑心暗鬼になりがちな、経営企画と事業部の壁 組織に「分断」が生まれる要因と打開策
リンクをコピー
記事をブックマーク
大嶋勇樹氏:ここまで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の過去バージョンは確認しよう ネット上では公開されていないドキュメントの見つけ方
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.21
40代〜50代の管理職が「部下を承認する」のに苦戦するわけ 職場での「傷つき」をこじらせた世代に必要なこと
2024.11.20
成果が目立つ「攻めのタイプ」ばかり採用しがちな職場 「優秀な人材」を求める人がスルーしているもの
2024.11.20
「元エースの管理職」が若手営業を育てる時に陥りがちな罠 順調なチーム・苦戦するチームの違いから見る、育成のポイント
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.19
がんばっているのに伸び悩む営業・成果を出す営業の違い 『無敗営業』著者が教える、つい陥りがちな「思い込み」の罠
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.15
好きなことで起業、赤字を膨らませても引くに引けない理由 倒産リスクが一気に高まる、起業でありがちな失敗
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.21
40代〜50代の管理職が「部下を承認する」のに苦戦するわけ 職場での「傷つき」をこじらせた世代に必要なこと
2024.11.20
成果が目立つ「攻めのタイプ」ばかり採用しがちな職場 「優秀な人材」を求める人がスルーしているもの
2024.11.20
「元エースの管理職」が若手営業を育てる時に陥りがちな罠 順調なチーム・苦戦するチームの違いから見る、育成のポイント
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.19
がんばっているのに伸び悩む営業・成果を出す営業の違い 『無敗営業』著者が教える、つい陥りがちな「思い込み」の罠
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.15
好きなことで起業、赤字を膨らませても引くに引けない理由 倒産リスクが一気に高まる、起業でありがちな失敗