1 λΆ„ μ†Œμš”

카카였 μ˜€ν”ˆλΉŒλ”

카카였 μ˜€ν”ˆλΉŒλ”λž€, μΉ΄μΉ΄μ˜€ν†‘μ—μ„œ μ§€μ›ν•˜λŠ” 챗봇 μ„œλΉ„μŠ€ API이닀.
https://i.kakao.com/에 λ“€μ–΄κ°€ μ‚¬μš©ν•  수 μžˆλ‹€.
카카였 μ˜€ν”ˆλΉŒλ”λ₯Ό μ‚¬μš©ν•˜λ©΄ μ†μ‰½κ²Œ μΉ΄μΉ΄μ˜€ν†‘ 챗봇을 λ§Œλ“€ 수 μžˆλ‹€.

ν•˜μ§€λ§Œ 카카였 μ˜€ν”ˆλΉŒλ”λ§Œμ„ μ‚¬μš©ν•˜λ©΄ λ‚΄κ°€ μ‚¬μš©μžμ˜ λ°œν™”λ₯Ό 미리 μ˜ˆμƒν•˜κ³ , 그에 λ§žλŠ” 닡변을 λ‚΄κ°€ 미리 μ„€μ •ν•΄μ•Ό λ™μž‘ν•œλ‹€.
예λ₯Ό λ“€μ–΄, μ‚¬μš©μžκ°€ β€œμ•ˆλ…•!”이라고 λ°œν™”ν•  것이라고 μ˜ˆμƒν•˜κ³  λ‚΄κ°€ β€œμ•ˆλ…•!”에 λŒ€ν•œ λ‹΅λ³€μœΌλ‘œ β€œμ•ˆλ…• μ˜€λžœλ§Œμ΄λ‹€!β€λΌλŠ” 닡변을 지정해야 ν•œλ‹€λŠ” 것이닀.

그러면 이 것을 μ–΄λ–»κ²Œ ν•΄μ•Ό λ‚΄κ°€ μ›ν•˜λŠ” 챗봇을 μΉ΄μΉ΄μ˜€ν†‘μ—μ„œ μ‚¬μš©ν•  수 μžˆμ„κΉŒ?
λ°”λ‘œ μŠ€ν‚¬μ„œλ²„μ™€ 폴백블둝이닀.

μŠ€ν‚¬μ„œλ²„

μŠ€ν‚¬μ„œλ²„λŠ” λ‚΄κ°€ μ‚¬μš©ν•  μ™ΈλΆ€ 챗봇 엔진이 λ™μž‘ν•˜λŠ” URL을 λ“±λ‘ν•˜μ—¬ 이 URLμƒμ—μ„œ λŒμ•„κ°€λŠ” μ—”μ§„μ—μ„œ μ‚¬μš©μž λ°œν™”λ₯Ό μ²˜λ¦¬ν•  수 μžˆλ‹€.
λ‚΄κ°€ μ΄ν•΄ν•œ λ°”λ‘œλŠ” μ‚¬μš©μžλ°œν™” -> ν•™μŠ΅λœ 데이터 μ—†μŒ -> 폴백블둝 -> μŠ€ν‚¬μ„œλ²„ -> 엔진 λ™μž‘ / λ‹΅λ³€ 좜λ ₯ -> 폴백블둝 -> μ‚¬μš©μžμ—κ²Œ λ‹΅λ³€μ΄λ ‡κ²Œ λ™μž‘ν•˜λŠ” κ²ƒμœΌλ‘œ μ΄ν•΄ν–ˆλ‹€.

μŠ€ν‚¬μ„œλ²„ λ“±λ‘ν•˜κΈ°
  1. μŠ€ν‚¬μ„œλ²„ 이름과 μ„€λͺ… μž…λ ₯
  1. URL μž…λ ₯ 곡간에 엔진이 λŒμ•„κ°€λŠ” 챗봇엔진 μ„œλ²„ URL μž…λ ₯
  1. μ•„λž˜μ— β€œμŠ€ν‚¬μ„œλ‘œ 전솑”을 클릭해 정상 λ™μž‘ν•˜λŠ”μ§€ 확인
  1. 끝

폴백블둝

ν΄λ°±λΈ”λ‘μ΄λž€, μ‚¬μš©μžκ°€ λ“±λ‘ν•œ λ°œν™”μ—μ„œ λ²—μ–΄λ‚œ λ°œν™”κ°€ λ“€μ–΄μ˜€λ©΄, 그에 λ§žλŠ” 닡변을 μ™ΈλΆ€μ—μ„œ κ°€μ Έμ˜¬ 수 μžˆλŠ” κΈ°λŠ₯이닀.
μœ„ μ˜ˆμ‹œμ²˜λŸΌ β€œμ•ˆλ…•!”에 λŒ€ν•œ λ‹΅λ³€μœΌλ‘œ β€œμ•ˆλ…• μ˜€λžœλ§Œμ΄λ‹€!”라고 μ§€μ •ν–ˆμ§€λ§Œ, μ‚¬μš©μž λ°œν™”λ‘œ β€œλ°°κ³ νŒŒβ€λΌκ³  λ“€μ–΄μ˜€λ©΄ λ‚΄κ°€ μ„€μ •ν•œ 닡변이 μ—†μœΌλ―€λ‘œ μ™ΈλΆ€ λͺ¨λΈμ—μ„œ μ‚¬μš©μž λ°œν™”λ₯Ό μ²˜λ¦¬ν•˜μ—¬ 닡변을 μ–»μ–΄ 좜λ ₯ν•˜λŠ” 방식이닀.

폴백블둝 λ“±λ‘ν•˜κΈ°
μ‹œλ‚˜λ¦¬μ˜€λ‘œ λ“€μ–΄κ°€ 폴백블둝클릭
νŒŒλΌλ―Έν„° μ„€μ •μ—μ„œ λ‚΄κ°€ λ“±λ‘ν•œ μŠ€ν‚¬μ„œλ²„μ™€ 버전 선택
μ•„λž˜ 봇 μ‘λ‹΅μ—μ„œ μŠ€ν‚¬λ°μ΄ν„°μ‚¬μš©μ„ 선택
μ €μž₯ν•˜λ©΄ 끝

μ˜ˆμ‹œ

Flask 챗봇 엔진 μ„œλ²„
λ§Žμ€ μ½”λ“œκ°€ μƒλž΅λ˜μ–΄ μžˆλŠ” μ½”λ“œμ§€λ§Œ, μ‚¬μš©μž λ°œν™”λ₯Ό request.get_json()으둜 λ°›μ•„μ˜¨λ‹€.
κ·Έ ν›„, [β€˜userRequest’][β€˜utterance’]에 ν•΄λ‹Ήν•˜λŠ” 값이 μ‚¬μš©μž λ°œν™”μ΄λ―€λ‘œ, ν•΄λ‹Ή λ°œν™”λ₯Ό νŒŒμ‹±ν•œλ‹€.
νŒŒμ‹±ν•œ 데이터λ₯Ό μ λ‹Ήνžˆ κ°€κ³΅ν•œ ν›„, answerλ³€μˆ˜μ— 결과값을 ν• λ‹Ήν•˜κ³  jsonν˜•νƒœμ— 맞좰 responseν•΄μ€€λ‹€.

[μ˜ˆμ‹œ μ½”λ“œ]

from flask import Flask
from flask import request
import pandas as pd
from sentence_transformers import SentenceTransformer
from sklearn.metrics.pairwise import cosine_similarity
import json

app = Flask(__name__)

@app.route("/model",methods=['POST'])
def decision():
    json_data = request.get_json() 
    text = json_data['userRequest']['utterance']
    
    # ... μƒλž΅
    
    responseBody = {
        "version": "2.0",
        "template": {
            "outputs": [
                {
                    "simpleText": {
                        "text": answer
                    }
                }
            ]
        }
    }
    
    return responseBody


if __name__ == '__main__':
    app.run(debug=True)


μœ„μ˜ 엔진 μ„œλ²„μ˜ URL을 μŠ€ν‚¬μ„œλ²„μ— λ“±λ‘ν•˜κ³  ν΄λ°±λΈ”λ‘μ—μ„œ μŠ€ν‚¬μ„œλ²„λ₯Ό μ§€μ •ν•œ ν›„, 봇 ν…ŒμŠ€νŠΈμ—μ„œ 확인해보면 끝!

νƒœκ·Έ:

μΉ΄ν…Œκ³ λ¦¬:

μ—…λ°μ΄νŠΈ:

λŒ“κΈ€λ‚¨κΈ°κΈ°