from logging import getLogger, DEBUG, StreamHandler from dotenv import load_dotenv import os import requests import json import pandas as pd import gradio as gr import openai load_dotenv() logger = getLogger() logger.setLevel(DEBUG) handler = StreamHandler() handler.setLevel(DEBUG) logger.addHandler(handler) dify_api_key = os.environ["DIFY_API_KEY"] def voice_to_text(voice_file): # 処理記述 return "仮の返答" def make_minutes(voice_to_text_output): # 処理記述 return "仮の返答" # def get_QA(): # url = 'https://api.dify.ai/v1/workflows/run' # headers = { # 'Authorization': 'Bearer {dify_api_key}', # 'Content-Type': 'application/json' # } # data = { # "inputs": { # { # "campany_web_url": "https://www.meiji.co.jp/", # "question_num": 2, # "sys.files": [], # "sys.user_id": "90f2bdbf-5004-49a5-bbec-158429971705" # } # }, # "response_mode": "streaming", # "user": "abc-123" # } # response = requests.post(url, headers=headers, json=data) # # レスポンスの確認 # print(response.status_code) # print(response.text) # return response.data.outputs def get_QA_table(url, number): url = 'https://api.dify.ai/v1/workflows/run' headers = { 'Authorization': f'Bearer {dify_api_key}', 'Content-Type': 'application/json' } data = { "inputs": { "campany_web_url": url, "question_num": number, }, "response_mode": "blocking", "user": "abc-123" } response = requests.post(url, headers=headers, data=json.dumps(data)) # res.textがJSON形式の文字列であることを仮定 try: res_dict = json.loads(response.text) # JSON文字列を辞書に変換 logger.info(f"response dict:{res_dict}") res_output = res_dict["data"]["outputs"]["result"] except json.JSONDecodeError as e: print(f"JSONDecodeError: {e}") q_list = res_output["q_list"] a_list = res_output["a_list"] # 仮にデータを作成(ここではURLや数字に基づいて動的にデータを生成できる) # データフレームを作成 df = pd.DataFrame({ 'Question': q_list, 'Answer': a_list }) # 表をHTMLに変換して返す return df.to_html() # Gradioのインターフェースを定義 with gr.Blocks() as demo: gr.Markdown("営業想定質問&回答生成ツール") # URL入力ボックス url_input = gr.Textbox(label="営業先URLを入力", placeholder="https://example.com") # 数字入力ボックス number_input = gr.Number(label="質問数を入力", value=1) # 実行ボタン submit_button = gr.Button("実行") # 表の出力エリア table_output = gr.HTML() # 実行ボタンが押されたときのアクションを定義 submit_button.click( fn=get_QA_table, # 実行される関数 inputs=[url_input, number_input], # 関数の入力 outputs=table_output # 関数の出力 ) if __name__ == "__main__": demo.launch(show_api=False, server_name="0.0.0.0")