openfree commited on
Commit
beb0aac
ยท
verified ยท
1 Parent(s): 14a6ee9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +44 -12
app.py CHANGED
@@ -40,7 +40,7 @@ def extract_keywords(text: str, top_k: int = 5) -> str:
40
  return " ".join(key_tokens)
41
 
42
  ##############################################################################
43
- # SERPHouse Live endpoint ํ˜ธ์ถœ
44
  # - ์ƒ์œ„ 20๊ฐœ ๊ฒฐ๊ณผ JSON์„ LLM์— ๋„˜๊ธธ ๋•Œ link, snippet ๋“ฑ ๋ชจ๋‘ ํฌํ•จ
45
  ##############################################################################
46
  def do_web_search(query: str) -> str:
@@ -50,30 +50,62 @@ def do_web_search(query: str) -> str:
50
  """
51
  try:
52
  url = "https://api.serphouse.com/serp/live"
 
 
53
  params = {
54
  "q": query,
55
  "domain": "google.com",
56
- "lang": "en",
57
  "device": "desktop",
58
- "serp_type": "web",
59
- "num_result": "20",
60
- "api_token": SERPHOUSE_API_KEY,
61
  }
62
- resp = requests.get(url, params=params, timeout=30)
63
- resp.raise_for_status()
64
- data = resp.json()
65
-
 
 
 
 
 
 
 
 
 
 
 
 
66
  results = data.get("results", {})
67
- organic = results.get("results", {}).get("organic", [])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  if not organic:
69
- return "No web search results found."
 
 
 
 
70
 
71
  summary_lines = []
72
  for idx, item in enumerate(organic[:20], start=1):
73
  item_json = json.dumps(item, ensure_ascii=False, indent=2)
74
  summary_lines.append(f"Result {idx}:\n{item_json}\n")
75
-
 
76
  return "\n".join(summary_lines)
 
77
  except Exception as e:
78
  logger.error(f"Web search failed: {e}")
79
  return f"Web search failed: {str(e)}"
 
40
  return " ".join(key_tokens)
41
 
42
  ##############################################################################
43
+ # SerpHouse Live endpoint ํ˜ธ์ถœ
44
  # - ์ƒ์œ„ 20๊ฐœ ๊ฒฐ๊ณผ JSON์„ LLM์— ๋„˜๊ธธ ๋•Œ link, snippet ๋“ฑ ๋ชจ๋‘ ํฌํ•จ
45
  ##############################################################################
46
  def do_web_search(query: str) -> str:
 
50
  """
51
  try:
52
  url = "https://api.serphouse.com/serp/live"
53
+
54
+ # ๊ธฐ๋ณธ GET ๋ฐฉ์‹์œผ๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ„์†Œํ™”
55
  params = {
56
  "q": query,
57
  "domain": "google.com",
58
+ "serp_type": "web", # ๊ธฐ๋ณธ ์›น ๊ฒ€์ƒ‰
59
  "device": "desktop",
60
+ "lang": "en"
 
 
61
  }
62
+
63
+ headers = {
64
+ "Authorization": f"Bearer {SERPHOUSE_API_KEY}"
65
+ }
66
+
67
+ logger.info(f"SerpHouse API ํ˜ธ์ถœ ์ค‘... ๊ฒ€์ƒ‰์–ด: {query}")
68
+ logger.info(f"์š”์ฒญ URL: {url} - ํŒŒ๋ผ๋ฏธํ„ฐ: {params}")
69
+
70
+ # GET ์š”์ฒญ ์ˆ˜ํ–‰
71
+ response = requests.get(url, headers=headers, params=params, timeout=30)
72
+ response.raise_for_status()
73
+
74
+ logger.info(f"SerpHouse API ์‘๋‹ต ์ƒํƒœ ์ฝ”๋“œ: {response.status_code}")
75
+ data = response.json()
76
+
77
+ # ๋‹ค์–‘ํ•œ ์‘๋‹ต ๊ตฌ์กฐ ์ฒ˜๋ฆฌ
78
  results = data.get("results", {})
79
+ organic = None
80
+
81
+ # ๊ฐ€๋Šฅํ•œ ์‘๋‹ต ๊ตฌ์กฐ 1
82
+ if isinstance(results, dict) and "organic" in results:
83
+ organic = results["organic"]
84
+
85
+ # ๊ฐ€๋Šฅํ•œ ์‘๋‹ต ๊ตฌ์กฐ 2 (์ค‘์ฒฉ๋œ results)
86
+ elif isinstance(results, dict) and "results" in results:
87
+ if isinstance(results["results"], dict) and "organic" in results["results"]:
88
+ organic = results["results"]["organic"]
89
+
90
+ # ๊ฐ€๋Šฅํ•œ ์‘๋‹ต ๊ตฌ์กฐ 3 (์ตœ์ƒ์œ„ organic)
91
+ elif "organic" in data:
92
+ organic = data["organic"]
93
+
94
  if not organic:
95
+ logger.warning("์‘๋‹ต์—์„œ organic ๊ฒฐ๊ณผ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.")
96
+ logger.debug(f"์‘๋‹ต ๊ตฌ์กฐ: {list(data.keys())}")
97
+ if isinstance(results, dict):
98
+ logger.debug(f"results ๊ตฌ์กฐ: {list(results.keys())}")
99
+ return "No web search results found or unexpected API response structure."
100
 
101
  summary_lines = []
102
  for idx, item in enumerate(organic[:20], start=1):
103
  item_json = json.dumps(item, ensure_ascii=False, indent=2)
104
  summary_lines.append(f"Result {idx}:\n{item_json}\n")
105
+
106
+ logger.info(f"๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ {len(organic)} ๊ฐœ ์ฐพ์Œ")
107
  return "\n".join(summary_lines)
108
+
109
  except Exception as e:
110
  logger.error(f"Web search failed: {e}")
111
  return f"Web search failed: {str(e)}"