みなさんこんにちは。生成AIチームのテリーです。
今日はBacklogとChatGPTの連携についてお話しさせてもらおうかと思います。ChatGPTとBacklogを日頃愛用されている方にとって有用な記事になればと思っています。
*2023年12月 現在の情報ですので画面のキャプチャや機能などが古くなっている可能性があります。ご注意ください。
目次
GPTsについて
GPTsとは特定の目的のために作成できるカスタムバージョンのChatGPTです。日常生活において特定のタスク、仕事、または家庭でより役立つようにChatGPTのカスタマイズバージョンを誰でも作成できるとても便利なツールです。また共有したりストアで公開したりできるなどの機能があり、SNSを見ていても日々便利なGPTsが作成されていてすごい勢いです。コーディングの知識なども必要とせず誰でもカスタムなChatGPTが作れます。
*2023/12現在有料ユーザーしか使えないサービスですのでご注意ください。
Backlog APIについて
BacklogAPIを使うと課題、Wiki,ファイルの追加や取得を始め、プロジェクトやユーザーの管理などブラウザ上のBacklogでできる操作を行うことができます。
認証方法はAPI Key 方式と OAuth 2.0 方式があります。
https://developer.nulab.com/ja/docs/backlog/
早速作ってみましょう
こちらのページに遷移し
https://chat.openai.com/gpts/discovery 下+ボタンを押すとGPTs作成画面に飛びます
Configure
タブからName
やDescription
を自分好みに設定します。使いながらここは調整していってもいいでしょう。
OAuthで認証する
APIの認証ですがOAuthで認証します。OAuthを使うためにはBacklog側でアプリを登録する必要があります。
注意点としてこの時点ではRedirect URI
がまだOpenAI側から発行されていないため適当なURLを入れる必要があります。作成に成功したらClient Id
とClient Secret
がBacklogによって発行されるのでこの情報をChatGPTに入れていきます。参考記事
https://dev.classmethod.jp/articles/aurl_oauth2_backlog-api/
ChatGPTの画面に戻ってConfiguration
タブの下部にあるCreate new action
ボタンを押すとAuthentication
のドロップダウンボタンがあるのでそれをクリックすると以下のようなポップアップが表示されますので以下のように設定していきます。
yourbacklogdomainの部分は適宜皆様が使用しているBacklogのドメインで置き換えてください。
Client ID: Backlogに登録されている情報 Client Secret: Backlogに登録されている情報 Authorization URL: https://yourbacklogdomain/OAuth2AccessRequest.action Token URL: https://yourbacklogdomain/api/v2/oauth2/token
Token Exchange Methodはデフォルトでいいです。
OpenAPI Specificationを用意する
さてこのままではActionsの部分がInvalid actionとなりますのでAPIの定義を用意する必要があります。BacklogAPIはOpenAPI specificationを公開していないためここは自力で入力する必要があります。
わざわざyamlを自分で書くのは大変なのでここも以下のようにChatGPTに部分的にお願いすることにしました。
Method: GET
以下は対象のAPIのWebページをコピペしてChatGPTが理解しやすいように整理したものになります。
Please create an openapi spec file referring below info. Method: GET URL: /api/v2/wikis/:wikiId URL parameters Parameter Name Type Description wikiId Number Wiki page ID Response example Status Line / Response Header ``` HTTP/1.1 200 OK Content-Type:application/json;charset=utf-8 ``` Response Body ``` { "id": 1, "projectId": 1, "name": "Home", "content": "test", "tags": [ { "id": 12, "name": "proceedings" } ], "attachments": [ { >>>>以下省略
一旦何も考えず自分が必要なAPIのエンドポイントをターゲットに生成していきます。今回は以下のようなOpenAPI Specが生成することができました。このSpecファイルは公式というわけでは無いのでご注意ください。
以下にyamlファイルを公開しています。
https://gist.github.com/trknhr/4ecc2569a2533ca8b50d6aee578f59de
penapi: 3.0.0 info: title: Backlog API version: 1.0.0 servers: - url: https://xxxx
上記のurl: https://xxxxを自分の使っているスペースのドメインに入れ替えてください。
ここまできたら右上のSaveボタンを押して更新してください。するとConfigurationタブにCallback URLが以下の画像のような形式で表示されるのでそのURLをBacklogのアプリケーションに登録します。
使ってみる
さてこのGPTsのページに移動して早速質問をしてみます。
Home のプロジェクトについて教えて
するとsigninを促すボタンがChatGPTから返却されるのでそれを押してBacklogとの連携を完了させます。404になる場合は最新のCallback URLがBacklogに反映されているか確認して下さい。
課題の検索
いい感じです。さらに詳しく聞いてみました。
いい感じです。
課題の登録
この後プロジェクトIDを正確に加えてChatGPTにお願いしてみたのですが、課題の登録には至りませんでした。もしかしたらOpenAPI Specを調整したらできるかもしれません。エラーが発生した時に詳細なエラーを探れないのが辛いところです。
Wikiへの質問
一応そこそこのものが出てきました。
感想
今回のwikiや課題の検索でやっているところは、結局課題の一覧やwikiの一覧のBacklogAPIエンドポイントのkeyword
というプロパティにChatGPTが自然言語からキーワードを入れてAPIをコールしているというところが肝なようです。
ということで結局はBacklogAPIを使っての検索と同じようなものが返ってくるため同等の機能を実現するためにGPTsを使う必要性はあまりないかもしれませんが、自然言語でAPIを利用できノーコードでここまでBacklogと簡単に連携できるという点はかなり魅力的に感じました。
まとめ
GPTsはBacklogとノーコードで連携できてとても便利なんですが、今後はBacklogの一機能として提供できるようチームとして頑張っていきたいと思います。