네이버 톡톡과 chap gpt 연동시 코드
코드 검토 결과, 몇 가지 수정할 부분이 있습니다. 특히 API 키 설정 및 데이터 접근 방식을 점검해야 합니다. 아래는 가능한 수정 사항입니다:
1. **API 키 형식 오류**: API 키는 문자열로 올바르게 닫혀야 합니다. 아래와 같은 형식으로 수정하세요.
```python
openai.api_key = "sk-123456789" # 필요한 경우 키를 실제로 교체하세요.
```
2. **`user_text` 접근 방식**: 데이터에서 `textContent`를 제대로 접근하고 있는지 확인하세요. 예를 들어, JSON 구조를 확인해보세요.
3. **간단한 인사말 체크**: `len(user_text) <= 4` 부분이 너무 짧은 메시지를 감지하여 인사를 하도록 동작하는데, 사용자의 의도를 명확히 하기 위해 이 조건을 조정할 수 있습니다.
4. **소스 코드에서 여백과 줄바꿈**: 코드의 가독성을 위해 적절한 여백과 줄바꿈을 사용하는 것이 좋습니다.
5. **HTTP 상태 코드**: 응답의 경우 상태 코드를 명시하는 것을 고려하세요. 성공적인 경우 `200 OK` 요청을 반환하는 것이 일반적입니다.
아래는 개선된 코드입니다:
```python
import openai
from flask import Flask, request, jsonify
app = Flask(__name__)
# OpenAI API 키 설정
openai.api_key = "sk-123456789" # 여기에 실제 API 키를 입력하세요.
# 간단한 인사말 목록
simple_greetings = ["안녕", "ㅎㅇ", "하이", "hello", "hi", "안녕하세요"]
@app.route('/webhook', methods=['POST'])
def webhook():
data = request.json
user_text = data.get("textContent", {}).get("text", "").strip().lower() # 사용자 메시지
# 첫 대화일 경우, 인사말이 포함되면 인사 응답
if any(greet in user_text for greet in simple_greetings) or len(user_text) <= 4:
final_reply = "안녕하세요, 스튜디오입니다."
# GPT-3.5-turbo 모델에 메시지 전달
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": user_text}]
)
gpt_reply = response.choices[0].message['content'].strip() # GPT 응답
final_reply = f"안녕하세요, 스튜디오입니다.\n\n{gpt_reply}"
except Exception as e:
print("❌ GPT 응답 오류:", e)
final_reply = "담당자 확인 후 답변 드리겠습니다."
# 네이버 톡톡 API 형식으로 응답 전송
return jsonify({
"version": "2.0", # API 버전
"template": {
"outputs": [
{
"simpleText": {
"text": final_reply # 최종 응답 메시지
}
}
]
}
})
if __name__ == '__main__':
app.run(port=5001)
```
위의 내용을 반영하여 코드를 실행해 보시고, 에러 메시지가 발생한다면 구체적인 상황과 함께 문의해 주시면 추가로 도움을 드리겠습니다.