Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LangChainでWebサイトの内容取得やGitHubソースコード取得

Shu Kobuchi
September 02, 2024

 LangChainでWebサイトの内容取得やGitHubソースコード取得

https://langchain.connpass.com/event/329185/

LangChainでは、Webサイトの内容取得やGitHubソースコード取得もできます。
使用してみた所感も交えてこれらの機能のご紹介をします。

Shu Kobuchi

September 02, 2024
Tweet

More Decks by Shu Kobuchi

Other Decks in Programming

Transcript

  1. 自己紹介 • 小渕 周(Shu Kobuchi)こぶシュー • https://x.com/shu_kob • 2023年12月スリーシェイク入社 ◦

    Sreake 事業部 ◦ アプリケーション開発支援チーム エンジニア ◦ 生成 AI アプリケーション開発等 ◦ 今はほぼほぼ Geminiを使用 ◦ 音声解析も 2
  2. 会社情報 会社名 株式会社スリーシェイク 設立日 2015/1/15 Mission: インフラをシンプルにして イノベーションが起こりやすい世界を作る Vision: 労苦〈Toil〉を無くすサービスを適正な価格で提供し続ける

    Value: エンジニアリングレイヤーに横たわる人、手法、ツールが サイロ化されて労苦が発生しているプロセスをシンプルにし サービス機能開発に集中できるソリューション (SRE、DevSecOps、DataOps、HROps)を提供する 2015 2016 2017 2018 2019 2020 2021 2022 0 50 100 従業員: 200名over Engineer 60% 所在地 東京都新宿区大京町22-1 グランファースト新宿御苑3F・4F  代表者 代表取締役社長 吉田 拓真 Google Cloud、AWSの両方に強みを持ち SREを軸にご支援 4
  3. SREを主軸にクラウドネイティブ化/エンジニアリング内製化を支援 SRE/DevOps SecOps BizOps HR ・SRE総合支援からセキュリティ対 策を全方位支援 ・生成AIの活用支援 ・ワンストップで脆弱性診断を行う セキュリティ対策SaaS

    ・クラウド型ETL/データパイプ ラインSaaSの決定版 ・あらゆるSaaSをノーコードで連携 ・ハイスキルフリーランスエンジニ ア紹介エージェント IT内製化 / 高度化 クラウドネイティブ化 モダナイゼーション ITアジリティ向上 5
  4. Sreakeの概要 1. SREの考え方を軸にした全方位型のご支援 クラウドネイティブインフラ・セキュリティ支援 クラウドネイティブアプリケーション開発支援 生成AIアプリケーション開発構築支援 ・コンテナ化、コンテナ運用ご支援  (Kubernetesに強み) ・CI/CD環境構築支援 ・クラウドセキュリティ設計・運用支援

    ・Observability設計・運用支援 データモダナイゼーション支援 ・コンテナ化対応などクラウドネイティブ対応に関す るアプリケーション開発のご支援 ・アプリケーションモダナイゼーション支援 ・バックエンド開発支援(Go, Python, TypeScript) ・フロントエンド開発支援(Vue, React) ・Big Query/Dataplex データ基盤構築支援 ・BI(Looker)構築をフルスタックで支援 ・Snowflakeメインのデータ基盤構築支援 ・DBRE支援(Spanner/AlloyDB) ・NewSQL(TiDB, YugabyteDB)支援 ・生成AIアプリ開発運用支援 ・社内情報検索のためのデータ設定支援 ・SREの考え方を元に開発後の運用支援 ・内製化のための生成AIワークショップ/ハンズ オン開催 • 高度な技術力と幅広い領域の経験を持つエンジニアが多数在籍しており、伴走型でお客様に最適なクラウドネイティブ対応の ご支援を行います。 • インフラ・アプリケーション・セキュリティなど含め全方位型で対応可能です。 SREの考え方を元に運用まで見据えたご支援を行います。 7
  5. LangChainでWebサイトの内容取得 • 実行例サンプルコード ◦ https://github.com/shu-kob/langchain-sample-code/blob/main/cheerioWebBaseL oader.ts • 使い方 ◦ https://js.langchain.com/v0.1/docs/integrations/document_loaders/web_loaders

    /web_cheerio/ • 実行例 ◦ $ npx ts-node cheerioWebBaseLoader.ts https://www.touken-world.jp/tips/7398/ • ページによっては、コードが多く入ってしまう ◦ $ npx ts-node cheerioWebBaseLoader.ts https://www.gyomusuper.jp/ • cheerioWebBaseLoaderは、デフォルトで<body>タグ内を読んでいて、その中に<script>や <style>があると出力してしまう 13
  6. LangChainでWebサイトの内容取得 • cheerioWebBaseLoaderを使わず、<body>タグ内の<script>や<style>を除去 ◦ https://github.com/shu-kob/langchain-sample-code/blob/main/webLoad.ts • 実行例 ◦ $ npx

    ts-node webLoad.ts https://www.gyomusuper.jp/ • 比較的綺麗に取れるように 14 // HTMLの取得 const response = await fetch(url) const htmlText = await response.text() const cheerioText = cheerio.load(htmlText) // styleとscriptを除去 cheerioText('style').remove() cheerioText('script').remove() const bodyContent: string = cheerioText('body').text().replace(/\s+/g, '')
  7. LangChainでGitHubリポジトリのソースコード取得 • 実行例サンプルコード ◦ https://github.com/shu-kob/langchain-sample-code/blob/main/githubLoader.ts • 使い方 ◦ https://js.langchain.com/v0.2/docs/integrations/document_loaders/web_loaders /github/

    ▪ GitHub Access Tokenを使うことで、Privateリポジトリの情報も取得可能 • 実行例 ◦ $ npx ts-node githubLoader.ts https://github.com/GoogleCloudPlatform/enterprise-knowledge-solution version1.2 • ソースコードは文量が多い ◦ ignorePathsで削るなど ◦ こちらも200万トークン対応のGemini1.5など長大なトークン長に対応していたら要約が不 要になる場合も 17
  8. ソースコード読解の実用例 • ソフトウェア開発への生成AI活用 ◦ プロジェクトマネージャが開発者に確認しなくても迅速に正確に仕様を把握可能 ◦ プロジェクトへの新規着任者がシステムの仕様理解迅速化 ◦ 仕様書を作らせるだけだとあっさりなので、各ファイルごとの仕様書も追加 GenAI

    App Source Codes 仕様書作成 指定したGitHubリポジトリの ソースコードを読み取り ソフトウェア開発支援生成 AI アプリ 作成した仕様書を RAGに配置して、検 索、質問が可能 LLM 「ソースコードから仕様書を作 成してください」