Renecto commited on
Commit
43b7be6
·
verified ·
1 Parent(s): fb5c17f

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +56 -0
app.py ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import openai
2
+ from openai import AsyncOpenAI
3
+ import os
4
+ import json
5
+ import pandas as pd
6
+
7
+ async def text2theme(p, openai_key=os.environ.get('OPENAI_KEY'), target="ユーザ"):
8
+ """
9
+ input1 (text): 「ペットボトル」という項目は何に仕分けしたら良いですか?
10
+ input2 (text): default
11
+ input3 (text): ユーザ
12
+ output1 (dataframe): 仕分け候補
13
+ """
14
+ if openai_key == "default":
15
+ os.environ['OPENAI_API_KEY'] = os.environ.get('OPENAI_KEY')
16
+ else:
17
+ os.environ['OPENAI_API_KEY'] = openai_key
18
+
19
+ header = '{"1":"'
20
+ prompt=f'{p}\n{target}にとっての順位をkeyとして1~の数値をintに、訴求要素をvalueに、1階層のjsonだけを返し、バッククオートなどは含めないでください。\njson:{header}'
21
+ #print(prompt)1
22
+ client = AsyncOpenAI()
23
+ response = await client.chat.completions.create(
24
+ model='gpt-4',
25
+ messages=[
26
+ {
27
+ "role": "system",
28
+ "content": "あなたは会計士と税理士の資格を持っており、全ての質問にjsonで回答します。"
29
+ },
30
+ {
31
+ "role": "user",
32
+ "content": prompt
33
+
34
+ },
35
+ ],
36
+ top_p=1,
37
+ frequency_penalty=0,
38
+ presence_penalty=0
39
+ )
40
+
41
+ json_data = header + response.choices[0].message.content
42
+ try:
43
+ # JSONデータを読み込む
44
+ j = json.loads(json_data)
45
+ except json.decoder.JSONDecodeError as e:
46
+ # JSON解析エラーが発生した場合、エラーの位置を特定
47
+ error_position = e.pos # エラーが発生した位置
48
+ print("JSONデコードエラー:", e)
49
+ print("エラーの周辺の文字:", json_data[max(0, error_position-10):error_position+10])
50
+
51
+
52
+ data = []
53
+ for k,v in j.items():
54
+ data.append([k,v])
55
+
56
+ return pd.DataFrame(data, columns=['rank', 'theme'])