IssueやPull Requestに返事をしてくれるAIサービスDosuの無料プランを触ってみた
LangChain.jsのIssueにDosuが迅速に回答し、無料のサービスであることが分かり導入した。DosuはOSS開発者向けに500回までの無料利用枠を提供し、GitHubと連携して質問や問題を自動化できる機能がある。チャンネル作成や回答生成、Issue自動化などが可能で、使い方を確認した後、要求に応じてPauseや削除も行える。無料枠を超えた際の料金については気になるが、機能の利便性に期待が高まっている。
目次
背景
LangChain.jsにIssueを立てたとき、真っ先に回答してくれたのがこのサービスが提供するbotでした。はじめはLangChainチームが自作したものかなぁと思っていたのですが、名前で検索するとサービスサイトが出ているのを見つけました。

「Dosu を使用すると、エンジニアは質問に答え、問題をトリアージし、ドキュメントを維持することで、付加価値の高い作業に集中できます。(Google 翻訳)」というリード文がもう良い感じですね。
OSSプロジェクトなら、無料で使える
「でもこの手のサービスって、なかなか良い値段するのでは?」と思ったのですが、Pricingページを見るとまさかの記述がありました。
Dosu is free for up to 500 requests per month for open source maintainers. For higher usage limits or private repositories, talk to us.
はい。OSSなら月500回まで無料だそうです。人気のリポジトリ、それこそLangChainやLlamaIndexなどでは到底足りない数だとは思いますが、個人で細々とやっているものであれば十分ではないでしょうか。
Dosuを導入してみよう
ということで、早速導入してみます。
Dosuアカウントは、GitHubとの連携で作る
ログインページにアクセスすると、GitHubアカウントとの連携を求められます。

ここではプロフィール情報だけを要求されますので、あくまで認証用ということでしょう。

アカウントを作成すると、いくつかのフォームが出てきます。ポイントと思われるのが、下の写真にある「Why do you want to use Dosu?」です。OSSに利用したい場合は、ここでI’m interested in using Dosu for open-sourceを選びましょう。リポジトリのURLまたはOrgのURLを入力する必要があります。

あとは「どこでDosuを知ったの?」という質問がありますので、URLなどを貼って教えてあげましょう。「どうも日本人がDosu触り出してるみたいだぞ?」と気づいてもらえるようになれば、そのうち東京とかに来てくれるかもしれません。
アカウント作成が終わると、ダッシュボードに移動します。

リポジトリとの設定(Channels)を作る
ホーム画面に「押してくれ」と言わんばかりに配置されているCreate Channelボタンをクリックしてみましょう。どうやらDosuでは、すぐに回答してくれるStandard Setup Modeと回答をメンテナーがプレビューできるPreview Modeの2つがあるみたいです。今回はまずPreview Modeを選んでみましょう。

Channelのターゲット(接続先)を選ぶ画面に進みます。ここでDosuのGitHubアプリをインストールする必要がでてきます。使いたいOrganizationやリポジトリを指定してGitHubアプリをインストールしておきましょう。

要求されるパーミッションは、リポジトリに対する一通りのReadアクセスと、discussions, issues, and pull requestsへのWriteアクセスでした。あくまでユーザーサポート、Issue等への対応に専念するという姿勢が伺えます。

GitHubアプリのインストールが完了すると、リポジトリが出てきます。選べるリポジトリは1つだけの様子ですので、複数プロジェクトに使いたい場合は、Channelをその数だけ作ることになりそうです。

設定が完了すると、「Preview Modeで始めてるよー」というメッセージが表示されます。後からStandard Modeに変更できるということみたいですね。

Data Sourcesを追加する
回答を作るためのデータソースも追加できるみたいです。左側のメニューでData Sourcesを選ぶと、読み込むリポジトリやWebサイトを指定できました。

こちらは複数のリポジトリが選べるみたいです。

追加してから利用できるまで少し時間がかかるみたいなので、待ちましょう。

返答の設定を作る
Channelの設定ページでは、自動返信を有効にするかどうかや、古いissueのマーク、issueをラベルによってトリアージするなどの機能を管理できます。リポジトリで使いたい機能を選んで有効化しておきましょう。

Pull Requestも設定できますが、dependabotやrenovateによるpull requestにも反応しそうな気がしたため、こちらはちょっと保留しています。
DosuにIssueを投げてみる
セットアップができたら、早速使いたくなるものです。メンテナー本人が使い方の質問をIssueで立てるという不思議な状況ですが、Dosuを呼び出すために質問してみましょう。

少し待つと、DosuのInboxに作成したIssueが出てきました。Generate Answerで回答を作ってみましょう。

登録したdata sourceを使って回答を考えはじめます。数分で回答が生成されます。

ちなみにpreviewモードでも、Allow Dosu to comment on issueをオンにしてメンションすると、コメントを投稿するみたいです。
接続したChannelを削除、作り直す方法
つなぎ方を変えたい時やシンプルに消したいときは、ChannelsのDetailsタブから操作します。SettingsにPauseするボタンがありますので、まずPauseしましょう。その後削除するか再開するかを選べますので、ここで削除を選びます。

触ってみて
Issueの確認や対応の自動化は、OSS開発者にとって欲しくてたまらない機能ではないかと思います。もちろん精度の問題などはあると思いますが、一次対応や分類の区別だけでも認知負荷を減らすことができるでしょう。無料で試せる範囲を超えた時の金額が気になるところではありますが、しばらく無料枠の範囲でいろいろ使ってみたいと思います。