import openai from openai import AsyncOpenAI import os import json import pandas as pd async def shiwake(p, openai_key=os.environ.get('OPENAI_KEY'), target="ユーザ"): """ input1 (text): 「ペットボトル」という項目は何に仕分けしたら良いですか? input2 (text): default input3 (text): 税務署 output1 (dataframe): 仕分け候補 """ if openai_key == "default": os.environ['OPENAI_API_KEY'] = os.environ.get('OPENAI_KEY') else: os.environ['OPENAI_API_KEY'] = openai_key header = '{"1":"' prompt=f'{p}\n{target}にとって納得感のある順位をkeyとして1~の数値をintに、項目をvalueに、1階層のjsonだけを返し、バッククオートなどは含めないでください。\njson:{header}' #print(prompt)1 client = AsyncOpenAI() response = await client.chat.completions.create( model='gpt-4', messages=[ { "role": "system", "content": "あなたは会計士と税理士の資格を持っており、勘定科目名がすらすら出てきます。経費という曖昧な単語は利用しません。全ての質問にjsonで回答します。" }, { "role": "user", "content": prompt }, ], top_p=1, frequency_penalty=0, presence_penalty=0 ) json_data = header + response.choices[0].message.content try: # JSONデータを読み込む j = json.loads(json_data) except json.decoder.JSONDecodeError as e: # JSON解析エラーが発生した場合、エラーの位置を特定 error_position = e.pos # エラーが発生した位置 print("JSONデコードエラー:", e) print("エラーの周辺の文字:", json_data[max(0, error_position-10):error_position+10]) data = [] for k,v in j.items(): data.append([k,v]) return pd.DataFrame(data, columns=['rank', 'theme'])