Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import ai_functions | |
| import os | |
| from openai import OpenAI | |
| import json | |
| def transform_meal_description_to_json(description): | |
| return ai_functions.ai_function("Meal2Json", description) | |
| def analyze_user_data(likes, dislikes, allergens, diet_plan, calorie_intake, meal_description_json): | |
| user_data = { | |
| "likes": likes, | |
| "dislikes": dislikes, | |
| "allergens": allergens, | |
| "diet_plan": diet_plan, | |
| "calorie_intake": calorie_intake | |
| } | |
| description = json.dumps({"meal_data": meal_description_json, "user_data": user_data}) | |
| return ai_functions.ai_function("AnylizeJson", description) | |
| def verify_api_key(api_key): | |
| if os.environ.get("PASSWORD") == api_key: | |
| ai_functions.client = OpenAI(api_key=os.environ.get("API_KEY")) | |
| else: | |
| ai_functions.client = OpenAI(api_key=api_key) | |
| try: | |
| ai_functions.client.models.list() | |
| return f"OpenAI API is verified." | |
| except Exception as e: | |
| return f"OpenAI API isn't verified." | |
| with gr.Blocks() as app: | |
| with gr.Tab("OpenAI API Settings"): | |
| with gr.Row(): | |
| api_key_input = gr.Textbox(label="OpenAI API Key") | |
| api_key_ioutput = gr.Textbox(label="Info",interactive=False) | |
| Verify_button = gr.Button("Verify") | |
| Verify_button.click( | |
| verify_api_key, | |
| inputs=[api_key_input], | |
| outputs=[api_key_ioutput] | |
| ) | |
| with gr.Tab("添加餐點描述"): | |
| with gr.Row(): | |
| meal_description_input = gr.Textbox(label="餐點描述", placeholder="請輸入餐點描述...") | |
| meal_description_json_output = gr.Textbox(label="餐點 Json", interactive=False) | |
| transform_button = gr.Button("轉換為 JSON 格式") | |
| transform_button.click( | |
| transform_meal_description_to_json, | |
| inputs=[meal_description_input], | |
| outputs=[meal_description_json_output] | |
| ) | |
| with gr.Tab("使用者資訊"): | |
| with gr.Column(): | |
| likes_input = gr.Textbox(label="喜歡的餐點") | |
| dislikes_input = gr.Textbox(label="不喜歡的餐點") | |
| allergens_checklist = gr.CheckboxGroup(label="選擇過敏原", choices=["海鮮", "麩質", "堅果", "乳糖"]) | |
| diet_plan_input = gr.Textbox(label="飲食計畫") | |
| calorie_intake_input = gr.Textbox(label="卡路里攝取標準") | |
| analyze_output = gr.Textbox(label="分析結果", interactive=False) | |
| analyze_button = gr.Button("分析並推薦餐點") | |
| analyze_button.click( | |
| analyze_user_data, | |
| inputs=[likes_input, dislikes_input, allergens_checklist, diet_plan_input, calorie_intake_input, meal_description_json_output], | |
| outputs=[analyze_output] | |
| ) | |
| app.launch() | |