๐น ํ๊น ํ์ด์ค API
Hugging Face๋ ๋ค์ํ NLP ๋ชจ๋ธ๊ณผ ๋๊ตฌ๋ฅผ ๊ฐ๋ฐํ๊ณ ๊ณต์ ํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ค์ด ์ฝ๊ฒ NLP ๊ธฐ์ ์ ํ์ฉํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. Hugging Face์ API ์๋น์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์ํ ์ฌ์ ํ๋ จ๋ ์ธ์ด ๋ชจ๋ธ์ ํ์ฉํ ์ ์์ผ๋ฉฐ, ์ด๋ฌํ ๋ชจ๋ธ์ ๋๊ท๋ชจ ๋ฐ์ดํฐ์
์์ ์ฌ์ ์ ํ์ต๋ ์ํ๋ก ์ ๊ณต๋ฉ๋๋ค.
Hugging Face Model Hub์๋ ๋ค์ํ ์ข
๋ฅ์ ์ธ์ด ๋ชจ๋ธ์ด ํฌํจ๋์ด ์์ต๋๋ค. ์ด๋ฌํ ๋ชจ๋ธ๋ค์ ์ด๋ฏธ ๋๋์ ๋ฐ์ดํฐ์
์ผ๋ก ์ฌ์ ํ๋ จ๋์๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ธ ์์ฐ์ด ์ฒ๋ฆฌ ์์
์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
API๋ฅผ ํตํด Hugging Face์์ ์ ๊ณตํ๋ ๋ฏธ๋ฆฌ ํ์ต๋ AI ๋ชจ๋ธ์ ํธ์ถํ๊ณ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด, ๋ฌธ์ฅ ๋ถ๋ฅ, ๊ฐ์ฑ ๋ถ์, ๊ธฐ๊ณ ๋ฒ์ญ, ์ง๋ฌธ-๋ต๋ณ ๋ฑ๊ณผ ๊ฐ์ ์์
์ ์ํํ ์ ์์ต๋๋ค.
API ์์ฒญ์ ๋ณด๋ด๋ฉด ์
๋ ฅ ๋ฌธ์ฅ์ด๋ ๋ฐ์ดํฐ๊ฐ ํด๋น ๋ชจ๋ธ๋ก ์ ๋ฌ๋๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ก ์์ธก๊ฐ์ด๋ ๋ถ์ ๊ฒฐ๊ณผ๊ฐ ๋ฐํ๋ฉ๋๋ค. ์ด๋ ๊ฒ API๋ฅผ ํตํด ๋ฏธ๋ฆฌ ํ์ต๋ AI ๋ชจ๋ธ์ ํ์ฉํ๋ฉด ๋ณ๋์ ํ์ต ๊ณผ์ ์์ด๋ ์ฝ๊ฒ ์์ฐ์ด ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ์ด์ฉํ ์ ์์ต๋๋ค.
๐น API Key ๋ฐ๊ธ
1. ํ์๊ฐ์
ํ๊น ํ์ด์ค ์ฌ์ดํธ์์ ํ์๊ฐ์ ์ ์งํํฉ๋๋ค. ๊ธ์ ์ฐ๋ ์์ ์์ ์์ง oauth ์์ ๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ์์๊ณ , ํ์ ๊ฐ์ ์ ๋ง์ ์ ๋ณด์์ด ๊ฐ๋จํ ์ด๋ฃจ์ด์ก์ต๋๋ค..
2. ํ์๊ฐ์ ํ ์ด๋ฉ์ผ ์ธ์ฆ
ํ์๊ฐ์ ์งํ ์ฌ์ดํธ ์ด์ฉ์ด ๊ฐ๋ฅํ์ง๋ง, API Key๋ฅผ ๋ง๋ค๊ธฐ ์ํด์๋ ๊ฐ์ ๋ ์ ๋ ฅํ ๋ฉ์ผ๋ก ์ธ์ฆํด์ผํฉ๋๋ค.
3. API Key ๋ฐ๊ธ
์ฐ์ธก ์๋จ์ ๋๊ทธ๋ผ๋ฏธ๋ฅผ ํด๋ฆญํ์ฌ ๋์ค๋ Settings๋ฅผ ํด๋ฆญํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฐ์ธก๋ฐ์ Access Tokens๋ฅผ ํด๋ฆญํ์ฌ ๋์ค๋ ํ๋ฉด์์ New token์ ํด๋ฆญํ๋ฉด token์ ์์ฑํ ์ ์์ต๋๋ค.
New token ๋ฒํผ์ด ๋นํ์ฑํ ๋์ด์์ผ๋ฉด ๋ฉ์ผ ์ธ์ฆ์ด ์๋๊ฒ์ ๋๋ค.
๐น ์ถ๋ก API ์ฌ์ฉ ์์
์ง๋ฌธ ๋ต๋ณ
import json
import requests
API_TOKEN = 'ํ ํฐ ์
๋ ฅ'
headers = {"Authorization": f"Bearer {API_TOKEN}"}
API_URL = "https://api-inference.huggingface.co/models/deepset/roberta-base-squad2"
def query(payload):
data = json.dumps(payload)
response = requests.request("POST", API_URL, headers=headers, data=data)
return json.loads(response.content.decode("utf-8"))
data = query(
{
"inputs": {
"question": "What's my name?",
"context": "My name is Clara and I live in Berkeley.",
}
}
)
print(data)
"""
* ์ถ๋ ฅ ๊ฒฐ๊ณผ
{'score': 0.9326562285423279, 'start': 11, 'end': 16, 'answer': 'Clara'}
start, end๋ ์ ๋ต index
"""
๊ฐ์ฑ ๋ถ์
import json
import requests
API_TOKEN = 'ํ ํฐ ์
๋ ฅ'
headers = {"Authorization": f"Bearer {API_TOKEN}"}
API_URL = "https://api-inference.huggingface.co/models/sentence-transformers/all-MiniLM-L6-v2"
def query(payload):
data = json.dumps(payload)
response = requests.request("POST", API_URL, headers=headers, data=data)
return json.loads(response.content.decode("utf-8"))
data = query(
{
"inputs": {
"source_sentence": "That is a happy person",
"sentences": ["That is a happy dog", "That is a very happy person", "Today is a sunny day"],
}
}
)
print(data)
"""
* ์ถ๋ ฅ ๊ฒฐ๊ณผ
[0.6945773363113403, 0.9429150223731995, 0.256876140832901]
"""
๋ฌธ์ฅ ๋ถ๋ฅ
import json
import requests
API_TOKEN = 'ํ ํฐ ์
๋ ฅ'
headers = {"Authorization": f"Bearer {API_TOKEN}"}
API_URL = "https://api-inference.huggingface.co/models/distilbert-base-uncased-finetuned-sst-2-english"
def query(payload):
data = json.dumps(payload)
response = requests.request("POST", API_URL, headers=headers, data=data)
return json.loads(response.content.decode("utf-8"))
data = query({"inputs": "I like you. I love you"})
print(data)
"""
์ถ๋ ฅ ๊ฒฐ๊ณผ
[[{'label': 'POSITIVE', 'score': 0.9998738765716553}, {'label': 'NEGATIVE', 'score': 0.00012611268903128803}]]
"""
Text ์์ฑ
import json
import requests
API_TOKEN = 'ํ ํฐ ์
๋ ฅ'
headers = {"Authorization": f"Bearer {API_TOKEN}"}
API_URL = "https://api-inference.huggingface.co/models/gpt2"
def query(payload):
data = json.dumps(payload)
response = requests.request("POST", API_URL, headers=headers, data=data)
return json.loads(response.content.decode("utf-8"))
data = query({"inputs": "The answer to the universe is"})
print(data)
"""
์ถ๋ ฅ ๊ฒฐ๊ณผ
[{'generated_text': 'The answer to the universe is more than that. It tells the story of how
people have found the answer. If there is a universal God, then there must be an infinite god.
If we choose our answers too many ways to live, then the'}]
"""
๋๋ง์ ๋ชจ๋ธ์ ์๋ ๋งํฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
https://huggingface.co/docs/api-inference/detailed_parameters