0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

github x make.com x Dify 連携で自動コメントの作成

Posted at

はじめに

正直正しく出来るかは、わかりませんが現場の開発者からは度重なる修正の度にdostringを修正したり、設計書のメンテナンスをするのが面倒だしやりたくないという声をお聞きしました。リーダブルコードであれば自動的にdocstringを追加して、そこから自動的に概要設計書を作成出来たら現場のエンジニアが楽になるのでは?という想いから、実証実験をしてみることにしました。

ただしこの実験が成功するかは不明なので途中でポシャる可能性が大です。

第一弾は、こちらです。
https://qiita.com/kazuharu2022/items/ce09baa206785a4d8475

実証実験環境

OpenAI ・・・ 無料枠のあるgemini-flashもありますが、一旦はオーソドックスなOpenAIもO4を使います。

Dify ・・・ 特段現段階ではDifyまで必要とは思っていませんが、単に使ってみたかったというので敢えて使っています。無くても大丈夫です。今の所は。

make.com ・・・ 今回のある意味メインですね。最終的にはgithubのリポジトリからdocstringが書いていないコードに対して自動的にコメントを追記して、pull requestを発行するのに使う予定です。

今回行う範囲 - make.comを使ってリポジトリファイルにdostringを追加

今回はオーケストレーションツールのmake.comを使ってdifyとgithubを仲立ちします。
https://us2.make.com/

スクリーンショット 2025-05-15 13.18.01.png

流れとしては以下の通り

①特定のリポジトリに対して、コンテンツリストを取得
②コンテンツリストの中から.pyファイルを抽出
③pythonファイルを取り出す
④前回作成したdoctringを生成するDifyにソースコードをPost
⑤Docstring付きコードをgithubにpull

環境条件

  • 今回は1ファイルしかやりません。(沢山やると無料枠がなくなるので)
  • publicリポジトリで行います。そしてpull requestは作成しません

①特定のリポジトリに対して、コンテンツリストを取得

Difyは、googleやgithubのアカウントでログイン出来ます。好きな方を選んでログインしてください。
https://cloud.dify.ai/signin

make.comの新しいシナリオを作成して、モジュール「HTTP」−「make a Request」を作成します。

スクリーンショット 2025-05-15 13.31.13.png

「make a Request」でgithubにAPI経由でリポジトリのコンテンツリストを取得するための
URLを記述します。

URL
# owner はユーザーのアカウント名
# repositoryは今回対象のリポジトリ名
https://api.github.com/repos/{ower}/{repositry}/contents
headers
# github APIKEYはgithub側で発行してください。
# この説明は省きます。
Accept:application/vnd.github.v3+json
Authorization:Bearer {github APIKEY}

スクリーンショット 2025-05-15 13.28.28.png

スクリーンショット 2025-05-15 13.28.38.png

一度設定が終わったら実行してください。
そうすると右上に「①」のような数字が出来ます。
ここで出力されたoutputs情報を元に、jsonデータからファイルを取り出すためのurlを取り出します。

スクリーンショット 2025-05-15 13.42.40.png

スクリーンショット 2025-05-15 13.42.52.png

Dataの中がjsonデータ本体です。
スクリーンショット 2025-05-15 13.40.23.png

「json」-「parse json」を作成します。

スクリーンショット 2025-05-15 13.38.32.png

データ構造は先程のoutputsにあるdataをサンプルに作成します。
addを押すと次の画面になります。

スクリーンショット 2025-05-15 13.38.57.png

ここの「Generate」からoutputsのサンプルデータをコピペしてjson構造を創り出します。
スクリーンショット 2025-05-15 13.47.49.png

②コンテンツリストの中から.pyファイルを抽出

③pythonファイルを取り出す

今回は1ファイルのみしか行わないので、「HTTP」-「Get a file」でファイルを取り出します。
(ちゃんとやる場合はIteratorをこの前に配置してください)

スクリーンショット 2025-05-19 12.33.04.png

この段階では、pythonファイル以外も取得してしまっているので.pyファイルのみにフィルターします。
ただここでフィルターするよりも、「Get a file」の前の方が適切です。

スクリーンショット 2025-05-19 12.33.29.png

④前回作成したdoctringを生成するDifyにソースコードをPost

ようやくここで前回Difyで作成した要約生成AIエージェントに接続します。

「HTTP」ー「Make a request」でDifyを呼び出す方法は、Dify側のAPIアクセスに接続方法が
記述されています。

スクリーンショット 2025-05-19 12.39.52.png

api_keyは「APIアクセス画面」の右上から発行できます。
スクリーンショット 2025-05-19 12.44.16.png

dify api接続サンプル
curl -X POST 'https://api.dify.ai/v1/workflows/run' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data-raw '{
    "inputs": {"dify側の入力変数名","dify側に渡す文字列"},
    "response_mode": "blocking",
    "user": "abc-123"
}'

スクリーンショット 2025-05-19 12.47.00.png

スクリーンショット 2025-05-19 12.46.13.png

⑤Docstring付きコードをgithubにpull

docstring付きのコードをgihuthubにpullするためにまた「HTTP」−「Make a request」を設定します。
図にあるとおり設定をすればオッケーです。 bearerに記述するAPI-KEYの発行は省略します。

スクリーンショット 2025-05-19 12.49.30.png

スクリーンショット 2025-05-19 12.49.43.png

さいごに

今回はDify x OpenAI 4oでdocstringを追加するAIエージェントをオーケストレーションツールであるmake.comを使って、githubと連携してみました。
まぁここまでは出来るだろうと思っていたのと、ここまでであればvscode+github copilotで十分な範囲とは思います。

次回は複数ファイルに対応出来る用に手直しした上で、ドキュメントを生成していきます

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?