Spaces:
Sleeping
Sleeping
初期機能検討
#1
by
terapyon
- opened
機能一覧
Store
- GithubのIssueを別ツールでJSONを取得 : https://github.com/kazamori/github-api-tools
- 取得済みJSONからベクトルDBに保存
- メタデータを保存・・(1)
- Embedding
Search
- 条件をフィルタできる(レポジトリ、日付の範囲)・・(2)
- 文字列で検索
モデルなど
- Embedding: "intfloat/multilingual-e5-large"
- LLM: 検索のみなので利用なし。使うとしたらOpen AI GPT-3.5-turbo
- ベクトルDB: Qdrant Cloud
詳細部
メタデータ (1)
- id
- title
- created_at
- user
- url
- labels_
- type_: issue / comment
- comment_id: None / str
検索フィルタ (2)
- レポジトリ: select
- 日付範囲: 2015年1月から(現在までってできるかな?)
- commentを含むか?
できれば作りたい
- 複数レポジトリへの対応
- レポジトリ選択は静的なリスト(レポジトリを増やすたびにappのデプロイが必要)
未実装・将来検討
- ユーザ名のリストを取得して検索フィルタに追加。別DBを準備?
- ラベルで検索フィルタ。別DBを準備?
わいわい。
$ gh-cli-issues --verbose --disable-cache --repository cocoa-mhlw/cocoa
$ jq . cocoa-issues.json | more
{
"body": "現状はNotta.aiで書き起こしたそのまま。色々調整しないといけないとか、どこに置くかは後で考えるとして、ひとまず編集できる
ようにしておく。\r\n\r\n## Issue 番号 / Issue ID\r\n\r\n- #1168\r\n",
"comments": 0,
"comments_": [],
"created_at": "2022-10-28 09:02:55+00:00",
"html_url": "https://github.com/cocoa-mhlw/cocoa/pull/1197",
"labels_": [
"documentation"
],
"number": 1197,
"title": "COCOA公開Webミーティングスクリプト",
"user.login": "keiji"
}
{
"body": "## その機能リクエストは何らかの問題に関連しますか / Is your feature request related to a problem?\r\n\r\n報道にあると
り、COCOAの総括については行政として進めていくのだけど、オープンソースコミュニティを担当している自分としても、きちんと総括したいで
すね。\r\n\r\n - [x] コード品質\r\n - [x] 開発状況の可視化\r\n - [x] IssueやDiscussionの取り回し\r\n - [x] Pull Request取り込みの
ハンドリング\r\n - [x] HER-SYS\r\n - [x] そもそも「接触確認アプリ」というジャンルで技術的な質問に絞るのは難しいのではないか\r\n -
[x] ベータ版の運用\r\n - ~~ロードマップの提示~~ これは.......",
"comments": 14,
"comments_": [
{
"body": "上から順とか言うといつまで経っても書き終わらなさそうなので、書けるものから書いていこう。\r\n\r\n## IssueやDiscussi
onの取り回し\r\n\r\n対応する人が居る(そう、ぼくです)と....",
"created_at": "2022-09-15 10:48:03+00:00",
"html_url": "https://github.com/cocoa-mhlw/cocoa/issues/1144#issuecomment-1247928149",
"id": 1247928149,
"user.login": "keiji"
},
{
"body": "## 開発状況の可視化\r\n\r\nこれは少しうまくいった部類に入ると思います。\r\n\r\n現在、COCOAの開発チーム(委託事業社
に所属する開発者)は、コードに関してすべてGitHub上で作業をしています。\r\n\r\nぼくが関与を始めた当初、委託事業者の人たちはInterna
lなリポジトリで開発を進めていました。GitHubはリリース時にコー...",
"created_at": "2022-09-15 14:03:40+00:00",
"html_url": "https://github.com/cocoa-mhlw/cocoa/issues/1144#issuecomment-1248147723",
"id": 1248147723,
"user.login": "keiji"
},
],
"created_at": "2022-08-18 06:15:06+00:00",
"html_url": "https://github.com/cocoa-mhlw/cocoa/issues/1113",
"labels_": [
"bug",
"help wanted",
"in progress",
"welcome-contribution"
],
"number": 1113,
"title": "[Android] 接触情報が正常に表示されない場合がある",
"user.login": "keiji"
}
....
上記のようなJSON担っている。
JSONの構造を再確認
{
"body": "",
"comments": 14,
"created_at": "2022-08-18 06:15:06+00:00",
"html_url": "https://github.com/cocoa-mhlw/cocoa/issues/1113",
"labels_": [],
"number": 1113,
"title": "[Android] 接触情報が正常に表示されない場合がある",
"user.login": "keiji"
"comments_": [
{
"body": "",
"created_at": "2022-09-15 10:48:03+00:00",
"html_url": "https://github.com/cocoa-mhlw/cocoa/issues/1144#issuecomment-1247928149",
"id": 1247928149,
"user.login": "keiji"
},
{
"body": "",
"created_at": "2022-09-15 14:03:40+00:00",
"html_url": "https://github.com/cocoa-mhlw/cocoa/issues/1144#issuecomment-1248147723",
"id": 1248147723,
"user.login": "keiji"
},
],
}
metadataの構造
欲しい物
- repo_name: "cocoa": str
- id: number / id: int
- title: title / 親(issue)title: str
- created_at: created_at:
datetime??or int?? - user: "user.login": str
- url: "html_url": str
- labels_: labels_: list
?? <<< ここは再検討必要リストで持っていいのか? - type_: issue / comment: str
metadata = {
"repo_name": "cocoa",
"id": 0,
"title": "",
"created_at": ~datetime()~ int,
"user": "",
"url": "",
"labels_": [],
"type_": "",
}
データ型の確認
https://qdrant.tech/documentation/concepts/payload/#payload-types
- Integer
- Keyword (文字列または文字列のリスト)
datetime型はない模様
Unix timeを使うしかないか。
https://github.com/orgs/qdrant/discussions/43#discussioncomment-911581
GradioにDate pickerがまだない??
https://github.com/gradio-app/gradio/issues/2029
Gradioをやめて、streamlitに移行しようかな?
学習コストがかかるけど、そっちも調べてみよう。
時間の計算
>>> from dateutil.parser import parse
>>> dt = parse('2022-10-28 09:02:55+00:00')
>>> dt
datetime.datetime(2022, 10, 28, 9, 2, 55, tzinfo=tzutc())
>>> dt_int = int(dt.timestamp())
>>> dt_int
1666947775
>>> datetime.fromtimestamp(dt_int)
datetime.datetime(2022, 10, 28, 18, 2, 55)
日本時間になってしまうのは問題ないのか?別途検討する。
タイムゾーンを保持しているなら別にあとでなんとでもなる。
UTCのUnixタイムをintにしてDB保存しているが、クエリの時に日本時間でクエリすると、9時間の差が出ると思うので考慮が必要だと思った。
terapyon
changed discussion status to
closed