import logging import gradio as gr import json import os from google.oauth2.service_account import Credentials from googleapiclient.discovery import build from googleapiclient.errors import HttpError import openai from datasets import load_dataset # 로깅 설정 logging.basicConfig(filename='app.log', level=logging.INFO, format='%(asctime)s:%(levelname)s:%(message)s') def load_dataset_details(dataset_name, subset=None, text_field='text'): """ 데이터셋의 정보를 로드하는 함수. dataset_name: 데이터셋의 이름 (예: 'glue', 'squad' 등) subset: 데이터셋 내의 특정 부분 (예: 'mrpc', 'qqp' 등) """ # 데이터셋 로드 if subset: dataset = load_dataset(dataset_name, subset) else: dataset = load_dataset(dataset_name) # 데이터셋 정보 출력 # 모든 텍스트를 하나의 문자열로 연결 all_texts = [] for split in dataset: all_texts.extend([example[text_field] for example in dataset[split] if text_field in example]) # 리스트를 하나의 문자열로 변환 all_texts = ' '.join(all_texts) return all_texts def respond_to_query(query): relevant_info = load_dataset_details('erosk/musictext') response = openai.ChatCompletion.create( model="gpt-3.5-turbo", # 또는 사용 가능한 최신 모델 messages=[ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": query}, {"role": "assistant", "content": relevant_info} ], max_tokens=150, temperature=0.0, top_p=1.0, api_key='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' ) return response.choices[0].message['content'] def answer_query(query): draft_answer = find_similar_question(query) return enhance_answer(query, draft_answer) interface = gr.Interface(fn=respond_to_query, inputs="text", outputs="text", title="Intelligent FAQ System") interface.launch()