seawolf2357 commited on
Commit
f91f1da
β€’
1 Parent(s): 532321b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +47 -9
app.py CHANGED
@@ -1,32 +1,70 @@
1
  import gradio as gr
2
  import openai
3
  import os
 
4
 
5
  # OpenAI API ν‚€ μ„€μ •
6
  openai.api_key = os.getenv("OPENAI_API_KEY")
7
 
 
 
 
8
  def generate_keyword_from_text(input_text):
9
  try:
10
- response = openai.Completion.create(
11
- model="gpt-3.5-turbo", # λͺ¨λΈλͺ… 확인 ν•„μš”
12
- prompt=f"λ‹€μŒ ν…μŠ€νŠΈλ₯Ό λ°”νƒ•μœΌλ‘œ Pexelsμ—μ„œ 잘 검색될 영문 ν‚€μ›Œλ“œ ν•œ 쀄을 μƒμ„±ν•˜μ„Έμš”: '{input_text}'",
13
- temperature=0.5,
14
- max_tokens=10
 
15
  )
16
- keyword_full_response = response.choices[0].text
17
  keyword = keyword_full_response.split('\n', 1)[0].strip()
 
 
18
  return keyword
19
  except Exception as e:
20
  print(f"μ—λŸ¬ λ°œμƒ: {e}")
21
  return f"ν‚€μ›Œλ“œ 생성 쀑 μ—λŸ¬ λ°œμƒ: {e}"
22
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  # Gradio μΈν„°νŽ˜μ΄μŠ€ μ„€μ •κ³Ό μ‹€ν–‰
24
  iface = gr.Interface(
25
- fn=generate_keywords_and_search_images,
26
- inputs=gr.Textbox(lines=5, placeholder="여기에 Pexels 검색을 μœ„ν•œ ν…μŠ€νŠΈλ₯Ό μž…λ ₯ν•˜μ„Έμš”. 각 μ€„λ§ˆλ‹€ λ³„λ„μ˜ 검색 ν‚€μ›Œλ“œκ°€ μƒμ„±λ©λ‹ˆλ‹€."),
27
  outputs=gr.Gallery(),
28
  title="GPT 및 Pexels APIλ₯Ό μ΄μš©ν•œ 닀쀑 이미지 검색",
29
  description="제곡된 ν…μŠ€νŠΈμ˜ 각 쀄을 λ°”νƒ•μœΌλ‘œ Pexels 검색에 μ‚¬μš©ν•  영문 ν‚€μ›Œλ“œλ₯Ό μžλ™ μƒμ„±ν•˜κ³ , ν•΄λ‹Ή ν‚€μ›Œλ“œλ‘œ Pexelsμ—μ„œ 이미지λ₯Ό κ²€μƒ‰ν•©λ‹ˆλ‹€."
30
  )
31
 
32
- iface.launch()
 
1
  import gradio as gr
2
  import openai
3
  import os
4
+ import requests
5
 
6
  # OpenAI API ν‚€ μ„€μ •
7
  openai.api_key = os.getenv("OPENAI_API_KEY")
8
 
9
+ # Pexels API ν‚€ μ„€μ •
10
+ PEXELS_API_KEY = "5woz23MGx1QrSY0WHFb0BRi29JvbXPu97Hg0xnklYgHUI8G0w23FKH62"
11
+
12
  def generate_keyword_from_text(input_text):
13
  try:
14
+ response = openai.ChatCompletion.create(
15
+ model="gpt-3.5-turbo",
16
+ messages=[{
17
+ 'role': 'user',
18
+ 'content': f"λ‹€μŒ ν…μŠ€νŠΈλ₯Ό λ°”νƒ•μœΌλ‘œ Pexelsμ—μ„œ 잘 검색될 영문 ν‚€μ›Œλ“œ ν•œ 쀄을 μƒμ„±ν•˜μ„Έμš”: '{input_text}'"
19
+ }]
20
  )
21
+ keyword_full_response = response['choices'][0]['message']['content']
22
  keyword = keyword_full_response.split('\n', 1)[0].strip()
23
+ if keyword.startswith('"') and keyword.endswith('"'):
24
+ keyword = keyword[1:-1].strip()
25
  return keyword
26
  except Exception as e:
27
  print(f"μ—λŸ¬ λ°œμƒ: {e}")
28
  return f"ν‚€μ›Œλ“œ 생성 쀑 μ—λŸ¬ λ°œμƒ: {e}"
29
 
30
+ def search_pexels(keyword):
31
+ headers = {
32
+ 'Authorization': PEXELS_API_KEY
33
+ }
34
+ params = {
35
+ 'query': keyword,
36
+ 'per_page': 10
37
+ }
38
+ try:
39
+ response = requests.get('https://api.pexels.com/v1/search', headers=headers, params=params)
40
+ response.raise_for_status()
41
+ data = response.json()
42
+ image_urls = [photo['src']['medium'] for photo in data['photos']]
43
+ return image_urls
44
+ except Exception as e:
45
+ print(f"Pexels API μ—λŸ¬: {e}")
46
+ return []
47
+
48
+ def keyword_to_images(input_text):
49
+ lines = input_text.split('\n') # μž…λ ₯ ν…μŠ€νŠΈλ₯Ό 쀄 λ‹¨μœ„λ‘œ 뢄리
50
+ all_image_urls = []
51
+ for line in lines:
52
+ if not line.strip(): # λΉ„μ–΄ μžˆλŠ” 쀄은 κ±΄λ„ˆλœ€
53
+ continue
54
+ keyword = generate_keyword_from_text(line)
55
+ if keyword.startswith("ν‚€μ›Œλ“œ 생성 쀑 μ—λŸ¬ λ°œμƒ"):
56
+ continue # ν‚€μ›Œλ“œ 생성 쀑 μ—λŸ¬κ°€ λ°œμƒν•œ 경우, κ·Έ 쀄은 κ±΄λ„ˆλœ€
57
+ image_urls = search_pexels(keyword)
58
+ all_image_urls.extend(image_urls) # 각 ν‚€μ›Œλ“œλ³„ 검색 κ²°κ³Όλ₯Ό λͺ¨λ‘ ν•©μΉ¨
59
+ return all_image_urls
60
+
61
  # Gradio μΈν„°νŽ˜μ΄μŠ€ μ„€μ •κ³Ό μ‹€ν–‰
62
  iface = gr.Interface(
63
+ fn=keyword_to_images,
64
+ inputs=gr.Textbox(lines=10, placeholder="여기에 Pexels 검색을 μœ„ν•œ ν…μŠ€νŠΈλ₯Ό μž…λ ₯ν•˜μ„Έμš”. 각 μ€„λ§ˆλ‹€ λ³„λ„μ˜ 검색 ν‚€μ›Œλ“œκ°€ μƒμ„±λ©λ‹ˆλ‹€."),
65
  outputs=gr.Gallery(),
66
  title="GPT 및 Pexels APIλ₯Ό μ΄μš©ν•œ 닀쀑 이미지 검색",
67
  description="제곡된 ν…μŠ€νŠΈμ˜ 각 쀄을 λ°”νƒ•μœΌλ‘œ Pexels 검색에 μ‚¬μš©ν•  영문 ν‚€μ›Œλ“œλ₯Ό μžλ™ μƒμ„±ν•˜κ³ , ν•΄λ‹Ή ν‚€μ›Œλ“œλ‘œ Pexelsμ—μ„œ 이미지λ₯Ό κ²€μƒ‰ν•©λ‹ˆλ‹€."
68
  )
69
 
70
+ iface.launch()