shigel commited on
Commit
25ce5b8
·
0 Parent(s):

Duplicate from najimino/aicv

Browse files
Files changed (6) hide show
  1. .gitattributes +34 -0
  2. README.md +13 -0
  3. app.py +125 -0
  4. constraints.md +8 -0
  5. requirements.txt +2 -0
  6. template.md +155 -0
.gitattributes ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tflite filter=lfs diff=lfs merge=lfs -text
29
+ *.tgz filter=lfs diff=lfs merge=lfs -text
30
+ *.wasm filter=lfs diff=lfs merge=lfs -text
31
+ *.xz filter=lfs diff=lfs merge=lfs -text
32
+ *.zip filter=lfs diff=lfs merge=lfs -text
33
+ *.zst filter=lfs diff=lfs merge=lfs -text
34
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: najimino AI職務経歴書生成(β)
3
+ emoji: ⚡
4
+ colorFrom: red
5
+ colorTo: purple
6
+ sdk: gradio
7
+ sdk_version: 3.19.1
8
+ app_file: app.py
9
+ pinned: false
10
+ duplicated_from: najimino/aicv
11
+ ---
12
+
13
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
app.py ADDED
@@ -0,0 +1,125 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import openai
3
+ import requests
4
+ import os
5
+ import fileinput
6
+ from dotenv import load_dotenv
7
+
8
+ article = """
9
+ <h4>エンジニア募集中!</h4>
10
+ 弊社ではAIを利用したサービスを一緒に開発してくれる仲間を募集しております!
11
+ <p>
12
+ 当サービスに興味を持っていただいた方は、お問い合わせフォームよりご連絡ください!
13
+ <p>
14
+ <ul>
15
+ <li"><a href="https://www.najimino.co.jp/contact">お問い合わせフォーム</a></li>
16
+ <h5>注意事項</h5>
17
+ <ul>
18
+ <li style="font-size: small;">当サービスでは、2023/3/1にリリースされたOpenAI社のChatGPT APIのgpt-3.5-turboを使用しております。</li>
19
+ <li style="font-size: small;">当サービスで生成されたコンテンツは、OpenAI が提供する人工知能によるものであり、当サービスやOpenAI がその正確性や信頼性を保証するものではありません。</li>
20
+ <li style="font-size: small;"><a href="https://platform.openai.com/docs/usage-policies">OpenAI の利用規約</a>に従い、データ保持に関して弊社も同様の方針です(ただし諸般の事情によっては変更する可能性はございます)。
21
+ <li style="font-size: small;">当サービスで生成されたコンテンツは事実確認をした上で、コンテンツ利用者の責任において利用してください。</li>
22
+ <li style="font-size: small;">当サービスでの使用により発生したいかなる損害についても、当社は一切の責任を負いません。</li>
23
+ <li style="font-size: small;">当サービスはβ版のため、予告なくサービスを終了する場合がございます。</li>
24
+ </ul>
25
+ """
26
+
27
+ load_dotenv()
28
+ openai.api_key = os.getenv('OPENAI_API_KEY')
29
+ MODEL = "gpt-3.5-turbo"
30
+
31
+ def get_filetext(filename, cache={}):
32
+ if filename in cache:
33
+ # キャッシュに保存されている場合は、キャッシュからファイル内容を取得する
34
+ return cache[filename]
35
+ else:
36
+ if not os.path.exists(filename):
37
+ raise ValueError(f"ファイル '{filename}' が見つかりませんでした")
38
+ with open(filename, "r") as f:
39
+ text = f.read()
40
+ # ファイル内容をキャッシュする
41
+ cache[filename] = text
42
+ return text
43
+
44
+ class OpenAI:
45
+
46
+ @classmethod
47
+ def chat_completion(cls, prompt, start_with=""):
48
+ constraints = get_filetext(filename = "constraints.md")
49
+ template = get_filetext(filename = "template.md")
50
+
51
+ # ChatCompletion APIに渡すデータを定義する
52
+ data = {
53
+ "model": "gpt-3.5-turbo",
54
+ "messages": [
55
+ {"role": "system", "content": constraints}
56
+ ,{"role": "system", "content": template}
57
+ ,{"role": "user", "content": prompt}
58
+ ,{"role": "assistant", "content": start_with}
59
+ ],
60
+ }
61
+
62
+ # ChatCompletion APIを呼び出す
63
+ response = requests.post(
64
+ "https://api.openai.com/v1/chat/completions",
65
+ headers={
66
+ "Content-Type": "application/json",
67
+ "Authorization": f"Bearer {openai.api_key}"
68
+ },
69
+ json=data
70
+ )
71
+
72
+ # ChatCompletion APIから返された結果を取得する
73
+ result = response.json()
74
+ print(result)
75
+ content = result["choices"][0]["message"]["content"].strip()
76
+ return content
77
+
78
+ class NajiminoAI:
79
+
80
+ @classmethod
81
+ def generate_cv_prompt(cls, user_message):
82
+ template = get_filetext(filename="template.md")
83
+ prompt = f"""
84
+ {user_message}
85
+ ---
86
+ 上記を元に、下記テンプレートの職務経歴書を生成してください。
87
+ ---
88
+ {template}
89
+ """
90
+ return prompt
91
+
92
+ @classmethod
93
+ def generate_cv(cls, user_message):
94
+ prompt = NajiminoAI.generate_cv_prompt(user_message);
95
+ start_with = """
96
+ 職務経歴書は以下の通りです。
97
+ """
98
+ result = OpenAI.chat_completion(prompt=prompt, start_with=start_with)
99
+ return result
100
+
101
+ def main():
102
+
103
+ inputs_label="あなたの経歴を詳しく記載してください。"
104
+ outputs_label="Markdown形式の職務経歴書を1分程度で生成します。出力した職務経歴書は、事実確認の上、必要に応じて加筆修正し、ご自身の責任においてご利用ください。"
105
+ title="najimino AI職務経歴書生成(β)"
106
+ description="""
107
+ - najimino AI職務経歴書生成(β)を使うと、無料でMarkdown形式の職務経歴書が1分程度で生成できます!
108
+ - 就職活動をする際に、あなたの経歴を職務経歴書にまとめるのは大変です。
109
+ - najimino AI職務経歴書生成(β)は、あなたの経歴を自由な文面で入力するだけで、Markdown形式の職務経歴書を生成すること���できます!
110
+ - ※入出力の文字数は最大1000文字程度で職務経歴書を生成することができます。(入力文字数に応じて変化します。)
111
+ """
112
+
113
+ iface = gr.Interface(fn=NajiminoAI.generate_cv,
114
+ inputs=gr.Textbox(label=inputs_label),
115
+ outputs=gr.Textbox(label=outputs_label),
116
+ title=title,
117
+ description=description,
118
+ article=article,
119
+ allow_flagging='never'
120
+ )
121
+
122
+ iface.launch()
123
+
124
+ if __name__ == '__main__':
125
+ main()
constraints.md ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ # 制約
2
+
3
+ - あなたの名前はnajimino AIアシスタントです
4
+ - あなたは求職者のuserを人材募集企業に紹介するアシスタントです
5
+ - あなたの返信は下記テンプレートに沿って職務経歴書を作成します
6
+ - あなたの返信は求職者であるuserの言った事実のみテンプレートに記載します
7
+
8
+ # テンプレート
requirements.txt ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ openai>=0.27.0
2
+ python-dotenv
template.md ADDED
@@ -0,0 +1,155 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 職務経歴書
2
+
3
+ ## 基本情報
4
+
5
+ - Name: 馴染野 藍 (なじみの あい / Najimino AI)
6
+ - Blog: [ブログ名](http://example.com)
7
+ - SNS: Twitter @アカウント名
8
+ - Email: [email protected]
9
+
10
+ ## スキル
11
+
12
+ ### 言語
13
+
14
+ - Python
15
+ - JavaScript
16
+ - Dart
17
+ - など
18
+
19
+ ### フレームワーク
20
+
21
+ - OpenAI API
22
+ - Replicate API
23
+ - Flask
24
+ - FlutterFlow
25
+ - など
26
+
27
+ ### Middleware
28
+
29
+ - MySQL
30
+ - Redis
31
+ - nginx
32
+ - など
33
+
34
+ ### OS
35
+
36
+ - Windows
37
+ - Mac
38
+ - Linux
39
+ - iOS
40
+ - など
41
+
42
+ ### Hardware
43
+
44
+ - Raspberry Pi
45
+ - Arduino
46
+ - 3D Printer
47
+ - レーザーカッター
48
+ - など
49
+
50
+ ## 言語
51
+
52
+ - 日本語
53
+ - ネイティブ
54
+ - 英語
55
+ - かんたんな日常会話ができる
56
+ - TOEIC: xxx点
57
+
58
+ ## 強み・弱み
59
+
60
+ - 強み:柔軟性、継続力、コミュニケーション能力
61
+ - 弱み:パブリックスピーキング、データ分析
62
+
63
+ ## 価値観
64
+
65
+ - チャレンジ精神
66
+ - 成長志向
67
+ - 顧客志向
68
+ - 誠実
69
+
70
+ ## 興味・関心
71
+
72
+ - プロンプトエンジニアリング
73
+ - 技術革新
74
+ - スタートアップの事業開発
75
+ - アジャイル開発
76
+
77
+ ## 職務経歴
78
+
79
+ ### 会社名A
80
+
81
+ #### プロジェクト1
82
+
83
+ - 期間: yyyy/mm - 現在
84
+ - 職務内容:
85
+ - サービス開発
86
+ - 新機能開発
87
+ - テストコードの作成
88
+ - アプリケーションのデプロイ
89
+
90
+ - 職務の中で以下の成果を達成:
91
+ - Aを実現するためのBの開発
92
+ - Cの改善によるDの削減
93
+ - Eの導入によるFの効率化
94
+
95
+ ### 会社名B
96
+
97
+ #### プロジェクト2
98
+
99
+ - 期間: yyyy/mm - yyyy/mm
100
+ - 職務内容:
101
+ - システムの保守・運用
102
+ - バグ修正
103
+ - パフォーマンス改善
104
+ - データベースの設計・構築
105
+
106
+ 職務の中で以下の成果を達成:
107
+ - Gの問題を解決するためのHの改修
108
+ - Iの導入によるJの改善
109
+ - Kの開発によるLの実現
110
+
111
+ ## 課外活動
112
+
113
+ ### OSSコミュニティ参加
114
+
115
+ - 期間: yyyy/mm - yyyy/mm
116
+ - 組織名: プロジェクト名
117
+ - 職務内容:
118
+ - コントリビューションの実施
119
+ - ドキュメント作成
120
+ - イシュー解決のためのデバッグ
121
+ - 職務の中で以下の成果を達成:
122
+ - MのバグフィックスによるNの改善
123
+ - Oの機能追加によるPの実現
124
+ - Qのドキュメント作成によるRの理解促進
125
+
126
+ ### 受賞歴
127
+
128
+ - 期間: yyyy/mm
129
+ - イベント名: イベント名
130
+ - 受賞した賞: 受賞した賞
131
+ - 詳細: イベントのランディングページのリンクや、結果がわかる記事など
132
+
133
+ ### 執筆歴/登壇資料
134
+
135
+ - [Qiita](https://qiita.com/xxxxxxxxxxx)
136
+ - [ネットメディアの記事](https://example.com/example/article)
137
+ - [Speaker Deck](https://speakerdeck.com/example/presentation)
138
+
139
+ ## 将来どうなりたいか
140
+
141
+ ### 3年後になりたい姿
142
+
143
+ - ご自身のなりたい姿
144
+
145
+ ### 5年後になりたい姿
146
+
147
+ - ご自身のなりたい姿
148
+
149
+ ### 現在となりたい姿とのギャップ
150
+
151
+ - ご自身の現在となりたい姿とのギャップについて
152
+
153
+ ### なりたい姿を達成するために、取り組みたいこと
154
+
155
+ - 取り組みたいことについて