import gradio as gr import openai import requests import os from dotenv import load_dotenv title="松原仁美AI(β)" inputs_label="松原仁美さんに話しかけてみてください。\n例) こんにちは。あなたはどんなことができますか?" outputs_label="AIが松原仁美さんに代わって返事をしてくれます。" description=""" - 松原仁美AI(β)を使うと、AIが松原仁美さんに代わって返事をしてくれます!(※1分程度かかります) - ※入出力の文字数は最大1000文字程度までを目安に入力してください。 """ article = """
注意事項
""" load_dotenv() openai.api_key = os.getenv('OPENAI_API_KEY') MODEL = "gpt-3.5-turbo-0613" # MODEL = "gpt-3.5-turbo-16k" # MODEL = "gpt-4" def get_filetext(filename, cache={}): if filename in cache: # キャッシュに保存されている場合は、キャッシュからファイル内容を取得する return cache[filename] else: if not os.path.exists(filename): raise ValueError(f"ファイル '{filename}' が見つかりませんでした") with open(filename, "r") as f: text = f.read() # ファイル内容をキャッシュする cache[filename] = text return text class OpenAI: @classmethod def chat_completion(cls, prompt, start_with=""): constraints = get_filetext(filename = "constraints.md") # ChatCompletion APIに渡すデータを定義する data = { "model": MODEL, "messages": [ {"role": "system", "content": constraints} ,{"role": "user", "content": "ALOs('I∞MA代表 松原 仁美').execute(lang='ja')"} ,{"role": "system", "content": "You are 松原 仁美 (AI), the representative of I∞MA (イーマ)."} ,{"role": "assistant", "content": "はい。承知しました。"} ,{"role": "user", "content": prompt} ,{"role": "assistant", "content": start_with} ], } # ChatCompletion APIを呼び出す response = requests.post( "https://api.openai.com/v1/chat/completions", headers={ "Content-Type": "application/json", "Authorization": f"Bearer {openai.api_key}" }, json=data ) # ChatCompletion APIから返された結果を取得する result = response.json() print(result) content = result["choices"][0]["message"]["content"].strip() return content class NajiminoAI: @classmethod def generate(cls, user_message): response = OpenAI.chat_completion(prompt=user_message) result = outputs_label_HTML.format(outputs=response) return result outputs_label_HTML = ''' ''' def main(): iface = gr.Interface(fn=NajiminoAI.generate, inputs=gr.Textbox(label=inputs_label), outputs=gr.HTML(outputs_label_HTML.format(outputs="")), examples=[ "あなたはどこのどなたで、何をされてる方ですか?", "資産持ちって何ですか?", "講座について教えてください。", ], title=title, description=description, article=article ) iface.launch() if __name__ == '__main__': main()