import gradio as gr from huggingface_hub import InferenceClient import os from gradio_client import Client # 이미지 생성 API 클라이언트 import logging # 로깅 설정 logging.basicConfig(level=logging.INFO) # 환경 변수에서 Hugging Face API 토큰을 가져옵니다. hf_client = InferenceClient("CohereForAI/c4ai-command-r-plus", token=os.getenv("HF_TOKEN")) # 이미지 생성 API 클라이언트 설정 client = Client("http://211.233.58.202:7960/") def respond( message, history: list[tuple[str, str]], system_message, max_tokens, temperature, top_p, ): system_prefix = "System: 입력어의 언어(영어, 한국어, 중국어, 일본어 등)에 따라 동일한 언어로 답변하라." full_system_message = f"{system_prefix}{system_message}" messages = [{"role": "system", "content": f"{system_prefix} {system_message}"}] for user_msg, assistant_msg in history: messages.append({"role": "user", "content": user_msg}) if assistant_msg: messages.append({"role": "assistant", "content": assistant_msg}) messages.append({"role": "user", "content": message}) try: result = client.predict(...) if isinstance(result, dict) and 'url' in result: return result['url'] else: logging.error("결과 처리 실패: 결과가 딕셔너리 형태가 아님") return "이미지 생성에 실패했습니다." except AttributeError as e: logging.error("속성 오류: %s", str(e)) return "내부 처리 오류 발생" except Exception as e: logging.error("API 요청 중 오류 발생: %s", str(e)) return f"오류 발생: {str(e)}" finally: logging.info("요청 처리 완료") theme = "Nymbo/Nymbo_Theme" css = """ footer { visibility: hidden; } """ # Gradio 채팅 인터페이스를 설정합니다. demo = gr.ChatInterface( fn=respond, additional_inputs=[ gr.Textbox(value="You are an AI assistant.", label="System Prompt"), gr.Slider(minimum=1, maximum=2000, value=512, step=1, label="Max new tokens"), gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"), gr.Slider( minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p (nucleus sampling)" ), ], theme=theme, css=css ) if __name__ == "__main__": demo.launch()