Creative Code

geocoder, kakao API를 활용한 지리정보 검색,gpt기능 본문

코딩 study/python

geocoder, kakao API를 활용한 지리정보 검색,gpt기능

빛하루 2023. 10. 28. 21:53

먼저 pip install geopy 명령어로 모듈 설치하기..

REST_API_KEY 는 kakao developer 에서 애플리케이션 생성 후 rest api 키를 복사해 json 파일에 딕셔너리 형태로 저장후 사용

# 지오코딩을 위한 모듈을 가져옵니다
from geopy.geocoders import Nominatim
# 사용자 에이전트를 지정하여 지오코더 객체를 생성합니다
geocoder = Nominatim(user_agent='test')

# 특정 주소를 지오코딩하고 결과를 저장합니다
result = geocoder.geocode('서울특별시 송파구 올림픽로 300')
print(type(result))  # 결과의 데이터 타입 출력
print(result.address)  # 주소 출력
print(result.latitude)  # 위도 출력
print(result.longitude)  # 경도 출력
print(result.point)  # 지점 출력

# 위도와 경도를 사용하여 역지오코딩을 수행합니다
print(geocoder.reverse('37.5124641, 127.102543'))

# Kakao API와 관련된 모듈을 가져오고 JSON 파일에서 API 키를 로드합니다
import json, os
key = ''
with open('../key.json', 'r') as f:
    key = json.load(f)
REST_API_KEY = key['key']

# Kakao 지도 API를 사용하여 위도와 경도를 얻습니다
import requests
address = '서울특별시 송파구 올림픽로 300'
url = f'https://dapi.kakao.com/v2/local/search/address.json?query={address}'
headers = {'Authorization': f'kakaoAK {REST_API_KEY}'}
res = requests.get(url, headers=headers).json()
print(res)  # API 응답 출력
print(res['documents'][0]['address']['x'])  # X 좌표 출력
print(res['documents'][0]['address']['y'])  # Y 좌표 출력

# 20km 반경 내에서 Kakao 프렌즈 매장을 검색합니다
x = res['documents'][0]['address']['x']
y = res['documents'][0]['address']['y']
radius = 20000
query = '카카오프렌즈'
url = f'https://dapi.kakao.com/v2/local/search/keyword.json?y={y}&x={x}&radius={radius}&query={query}'
headers = {'Authorization': f'KakaoAK {REST_API_KEY}'}
res = requests.get(url, headers=headers).json()
print(res)

# Kakao Brain GPT를 사용하여 텍스트를 생성합니다
import requests, json

with open('../key.json', 'r') as f:
    key = json.load(f)
    REST_API_KEY = key['key']

def kogpt_api(prompt, max_tokens=1, temperature=1.0, top_p=1.0, n=1):
    r = requests.post(
        'https://api.kakaobrain.com/v1/inference/kogpt/generation',
        json={
            'prompt': prompt,
            'max_tokens': max_tokens,
            'temperature': temperature,
            'top_p': top_p,
            'n': n
        },
        headers={
            'Authorization': 'KakaoAk ' + REST_API_KEY,
            'Content_Type': 'application/json'
        }
    )
    response = json.loads(r.content)
    return response

# Kogpt를 사용하여 텍스트를 생성합니다
prompt = '''임진왜란때 조선의 왕은'''

response = kogpt_api(
    prompt=prompt,
    max_tokens=32,
    temperature=1.0,
    top_p=1.0,
    n=3
)
print(response)

# Kakao Brain Karlo를 사용하여 이미지를 생성합니다
import requests, json, urllib
from PIL import Image

def t2i(prompt, negative_prompt):
    r = requests.post(
        'https://api.kakaobrain.com/v2/inference/karlo/t2i',
        json={
            'prompt': prompt,
            'negative_prompt': negative_prompt
        },
        headers={
            'Authorization': f'KakaoAK {REST_API_KEY}',
            'Content-Type': 'application/json'
        }
    )
    response = json.loads(r.content)
    return response

# Karlo를 사용하여 이미지를 생성합니다
prompt = 'lunch'
negative_prompt = 'human'

response = t2i(prompt, negative_prompt)

result = Image.open(urllib.request.urlopen(response.get('images')[0].get('image')))
result.show()