見出し画像

LangChainのプルリクエスト一覧からChatGPTに今後のライブラリの進化の方向性を分析してもらってみた

みんな大好きLangChainですが、イシューの数もプルリクエストの数も凄まじいものがあります。流石、勢いのあるライブラリ。

プルリク見るだけでも大変ね

毎日ガンガンバージョンが上がって面白いなーと思う訳ですが、今後どんなアップデートがあるのかも何となく想定したいなと思うことがあります。

そんなわけで、プルリクのタイトル一覧を抜き出して雑にChatGPTに分析してもらったら何となくのライブラリの方向性が分かるのではないかと思い、試してみました。

プルリクエストの一覧を抜き出す

まずはプルリクエストのタイトル一覧を引っこ抜きましょう。

以下のPythonコードで引っこ抜きます。

import os
import requests

def get_open_pull_request_titles(repo_owner, repo_name, github_api_token):
    url = f"https://api.github.com/repos/{repo_owner}/{repo_name}/pulls"
    headers = {"Authorization": f"token {github_api_token}"}
    params = {"state": "open", "per_page": 100}
    page = 1

    while True:
        params["page"] = page
        response = requests.get(url, headers=headers, params=params)

        if response.status_code == 200:
            pull_requests = response.json()

            if not pull_requests:
                break

            for pr in pull_requests:
                print(pr["title"])

            page += 1
        else:
            print(f"Error: {response.status_code}")
            break

2023年4月11日17時現在で以下のようなリストを取得できました。

Comet ML Integration
FAISS: batch-embed in add_texts method
Remove unnecessary method from Qdrant vectorstore and clean up docstrings
Support the `GPTCache` caching
VectorStore Memory Module
Harrison/aws text
first draft
NIT: Instead of hardcoding k in each definition, define it as a param above.
Added bilibili loader
Make the OpenAPI agent's verbose print optional
Fixes hwchase17/langchain#1211
Batch embedding in pinecone add_texts method
Added a new Exception tool that sends parsing exceptions to agent so that it can recover
Added GooglePlacesAPIWrapper in Utility
Add verbose field in the LlamaCpp clients
support setting environment variables in `.env` file
fix: some imports for integration tests
(以下省略)

ChatGPT(GPT-4)に分析してもらう

で、これをChatGPTに分析してもらいます。GPT-4は十分に賢いので、呪文みたいなプロンプトを使わずにシンプルに聞いてみます。

以下はLangChainというライブラリのプルリクエストのタイトル一覧です。この一覧からLangChainの今後の進化の方向性について探りたいと考えています。考えられる進化の方向性について箇条書きで考察してください。

(以下、プルリクエスト一覧を貼り付け)

すると、こんな返答を得ることができました。

LangChainの今後の進化の方向性についての考察:

1. 機械学習モデルの性能向上:
 ・HuggingFaceModel の改善
 ・Anthropic ChatModel の追加
 ・Accelerate enabled open source models
2. 類似検索の最適化:
 ・FAISS, Pinecone, Typesense などの統合
 ・VectorStore Memory Module
 ・Vector Store Retrieval Toolkit
3. パフォーマンスの向上:
 ・バッチ処理の強化
 ・キャッシングのサポート
 ・並列処理の強化(ParallelChain)
4. 柔軟性と汎用性の向上:
 ・カスタムツールやエージェントの動的登録(langchain.register)
 ・LLM provider interface
 ・シリアライズ可能なAPIチェーン
5. セキュリティの向上:
 ・Guard Module
 ・PythonRepl の制限付き実行
 ・パッチ適用による脆弱性の修正
6. 外部サービスとの連携:
 ・Comet ML、Weights and Biases、mlflow などの機械学習プラットフォームとの統合
 ・Google Calendar、Notion、Gmail などのツールキットの追加
 ・Hugging Face、SageMaker、Azure GPT-3 などのAPI連携
7. データベースとの連携:
 ・SQLDatabaseChain の改善
 ・WITH句のサポート
 ・QuerySQLWithSubqueryDataBaseTool の追加
8. ユーザーフレンドリーな開発環境:
 ・Docker による開発とテスト環境
 ・.devcontainer の作成
 ・エラーメッセージの改善
9. ドキュメントとテストの充実:
 ・Notebook のテストの追加
 ・Dataset Review PR
 ・ドキュメントプロセッサの提案
10. その他の機能追加:
 ・音声・画像関連機能
 ・LLMを利用した会話チェーンの保存・読み込み
 ・メッセージ用の repr_markdown の追加

これらの進化の方向性から、LangChainは性能向上、柔軟性、拡張性、セキュリティ、外部サービス連携などの面で大きく発展していくと考えられます。

天才かよ。

これがそのまま答えという訳ではありませんが、何となくこんな雰囲気だなーということを掴むのには十分使える情報かなと感じました。

イシューの一覧を抜き出す

もののついでなので、イシューの分析をしてもらおうと思います。イシューからは今どんなことでみんなが困っているのか見えてきそうですよね。

例によってPythonでイシューのタイトル一覧を抜き出します。

def get_open_issue_titles(repo_owner, repo_name, github_api_token):
    url = f"https://api.github.com/repos/{repo_owner}/{repo_name}/issues"
    headers = {"Authorization": f"token {github_api_token}"}
    params = {"state": "open", "per_page": 100}
    page = 1

    while True:
        params["page"] = page
        response = requests.get(url, headers=headers, params=params)

        if response.status_code == 200:
            issues = response.json()

            if not issues:
                break

            for issue in issues:
                print(issue["title"])

            page += 1
        else:
            print(f"Error: {response.status_code}")
            break

2023年4月11日17時現在で以下のようなリストを取得できました。

Comet ML Integration
question_answering chains answers cut off
generation_info for ChatOpenAI model
FAISS: batch-embed in add_texts method
Remove unnecessary method from Qdrant vectorstore and clean up docstrings
How to delete or update a document within a FAISS index?
Permission Error with PDF loader
Directory loader error for pdfs
Support the `GPTCache` caching
Allow Weaviate initialization with alternative embedding implementation
VectorStore Memory Module
Harrison/aws text
first draft
VectorStoreIndexCreator can't load from UnstructuredFileLoader
(中略)

勢いがあるライブラリなだけに、雑なタイトルのイシューが多い気がします。いろんな人が入ってくるからね、しょうがないよね。

ChatGPT(GPT-4)に分析してもらう

今度は以下のようなプロンプトで聞いてみます。

以下はLangChainというライブラリのイシューのタイトル一覧です。この一覧からLangChainのユーザーが現在抱えている課題を分析したいと考えています。現在LangChainのユーザーが抱えている課題について箇条書きで考察してください。

(以下、イシューのタイトル一覧をコピペ)

ただイシューの量が多すぎ(500件オーバー)なため、最新200件に絞って聞いてみました。

現在、LangChainのユーザーが抱えている課題を以下のようにまとめました。

1. インテグレーション関連の課題
 ・Comet MLやAzure OpenAI、AWS、PowerBIとの連携
 ・他のモデルやライブラリとの互換性問題
 ・サポートされていないプラットフォームやデータベースの要望
2. パフォーマンスやリソースの問題
 ・トークン数やバッチサイズの制限
 ・モデルのメモリ使用やレスポンス速度の改善
3. ユーザビリティの改善
 ・エラーメッセージやドキュメントの充実
 ・サンプルコードやチュートリアルの追加
 ・環境設定やデバッグの容易さの向上
4. 機能追加や拡張性の向上
 ・モデルのカスタマイズやプラグイン対応
 ・ツールやエージェントの新機能リクエスト
 ・柔軟な入出力処理やメモリ管理
5. 信頼性や品質の向上
 ・モデルの不具合やバグ修正
 ・誤った結果やホールシネーションの問題
 ・テストや品質管理の強化
6. セキュリティやプライバシー関連
 ・認証や権限管理の改善
 ・データ保護やプライバシー対策の要望

これらの課題を解決することで、LangChainのユーザーはより効果的かつ効率的に機能を利用できるようになるでしょう。

分析はできていそうですが、課題にあたっていくには抽象化されすぎていて、まるで大企業の中の人が書いたようなレポートのようです。

もう少し具体的な話と、順位付けが分かると良いよねと思って、続けて以下のように聞いてみました。

具体的に困っている課題についてランキングを作り、10位まで表示して下さい。

課題にランキングを付けるのは主観的な要素が大きいため、ランキングを作成する際は注意が必要です。ただし、イシューのリストから類推できるような傾向をもとに、以下にランキングを示します。

1. モデルの互換性やインテグレーション関連の問題(Comet ML、Azure OpenAI、PowerBIなどとの連携)
2. エラーメッセージやドキュメントの充実、改善
3. トークン数やバッチサイズの制限に関する問題
4. モデルの不具合やバグ修正
5. 新機能リクエストや機能拡張(ツールやエージェントの追加)
6. パフォーマンスやリソースの最適化(メモリ使用量やレスポンス速度の改善)
7. 誤った結果やホールシネーションの問題
8. サンプルコードやチュートリアルの追加、改善
9. セキュリティやプライバシー関連の課題(認証や権限管理の改善、データ保護)
10. 環境設定やデバッグの容易さの向上

このランキングは、現在のイシューリストに基づいていますが、時間とともにユーザーのニーズや開発状況が変わる可能性があります。また、個々のユーザーによって重要視する課題が異なるため、このランキングはあくまで参考程度に考えてください。

特に評価指標を定めず、ランキングを作ることを雑に要求したため冒頭でめちゃくちゃ嫌がられていますが、ちゃんと生成してくれました。みんないろいろ連携するときに問題が起こって困っていそうですね。

ここから分かること

単なる情報の羅列からもパターン分析から何らかの考察を瞬時にはじき出してくれるのは非常に有用だなと感じます。トークン数制限があるため、あまりにも大量のデータの分析をさせることは適いませんが(更に言うと、日本語データだとより不利になりますが)そこは今後の進化に期待でしょう。

既に取り組んでいる現場もあるかも知れませんが、例えばSlackの個人別分報チャンネルがあれば、そこでの発言のサマリからマネージャーも本人もフィードバックを得る事ができますし(サマリそのものがふりかえりと同じ効果をもたらす)、アンケート調査における定性データの暫定サマリも高速に作成することができます。フローで流れてくる情報をLLMによってストック情報に変換する施策は、はじめの第一歩として有効ですね。

現場からは以上です。

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