import gradio as gr import requests import os PERPLEXITY_API_KEY = os.getenv("PERPLEXITY_API_KEY") GEMINI_API_KEY = os.getenv("GEMINI_API_KEY") def search_and_answer(question): # 1. Search using Perplexity headers = {"Authorization": f"Bearer {PERPLEXITY_API_KEY}"} data = { "query": question, "domain": ["gg.go.kr", "ggc.go.kr"] } search_resp = requests.post("https://api.perplexity.ai/search", json=data, headers=headers) search_data = search_resp.json() snippets = "\n".join([r["snippet"] for r in search_data.get("results", [])[:3]]) # 2. Generate answer with Gemini (correct model) prompt = f"질문: {question}\n\n아래 자료를 참고하여 요약된 답변을 생성해 주세요:\n{snippets}" gemini_url = "https://generativelanguage.googleapis.com/v1/models/gemini-1.5-pro:generateContent" headers = {"Content-Type": "application/json"} params = {"key": GEMINI_API_KEY} body = { "contents": [{"parts": [{"text": prompt}]}] } gemini_resp = requests.post(gemini_url, params=params, headers=headers, json=body) resp_json = gemini_resp.json() print("Gemini 응답 전체:", resp_json) # 디버깅용 출력 try: return resp_json["candidates"][0]["content"]["parts"][0]["text"] except KeyError: return f"[Gemini 오류] 예상된 응답 형식이 아닙니다. 응답 내용: {resp_json}" iface = gr.Interface(fn=search_and_answer, inputs="text", outputs="text", title="경기도 자연어 질의 응답 AI", description="질문을 입력하면 경기도 공식 사이트를 검색하고, Gemini AI가 요약 답변을 드립니다.") iface.launch()