카카오톡 ChatGPT 챗봇 만들기
카카오톡 메신저에서 ChatGPT API를 활용하여 대화형 봇을 구현하는 방법을 소개합니다.
이 챗봇은 메시지를 받아 GPT 모델에 전달하고, 응답을 다시 카카오톡으로 보내주는 기능을 합니다.
코드 설명
// 봇의 이름을 설정합니다.
const scriptName = "gpt";
// OpenAI API 키를 저장하는 변수입니다. 실제 사용시에는 본인의 API 키로 교체해야 합니다.
let key = "your_api_key!!";
// 메시지를 받았을 때 실행되는 메인 함수입니다.
function response(room, msg, sender, isGroupChat, replier, imageDB, packageName) {
// 메시지가 "!챗 "으로 시작하는지 확인합니다.
if (msg.startsWith("!챗 ")) {
// "!챗 " 이후의 텍스트만 추출합니다.
cmd = msg.substr(3);
// GPT 응답을 받아서 채팅방에 전송합니다.
replier.reply("[답변] \n" + getResponse(cmd));
}
}
// ChatGPT API에 요청을 보내고 응답을 받는 함수입니다.
function getResponse(msg) {
let result;
// API 요청에 필요한 데이터를 설정합니다.
let data = {
"model": "gpt-4o",
"messages": [
{
"role": "user",
"content": msg
}
],
"temperature": 0,
"max_tokens": 1024,
"top_p": 1,
"frequency_penalty": 0.0,
"presence_penalty": 0.0
}
try {
// Jsoup 라이브러리를 사용하여 API 요청을 보냅니다.
let response = org.jsoup.Jsoup.connect("https://api.openai.com/v1/chat/completions")
.header("Content-Type", "application/json")
.header("Authorization", "Bearer " + key)
.requestBody(JSON.stringify(data))
.ignoreContentType(true)
.ignoreHttpErrors(true)
.timeout(200000)
.post();
// API 응답을 텍스트로 받습니다.
let responseText = response.text();
// 디버깅을 위해 응답 로그를 남깁니다.
Log.d("API Response:", responseText);
// JSON 응답을 파싱합니다.
let result1 = JSON.parse(responseText);
// API 응답에서 실제 메시지 내용을 추출합니다.
if (result1.choices && result1.choices.length > 0 && result1.choices[0].message) {
result = result1.choices[0].message.content;
} else {
// 응답 구조가 예상과 다를 경우 에러 메시지를 반환합니다.
result = "API 응답 구조가 예상과 다릅니다: " + JSON.stringify(result1);
}
} catch(e) {
// 에러 발생 시 에러 메시지를 반환합니다.
result = "오류 발생: " + e.toString();
}
return result;
}
사용 방법
- OpenAI API 키를 발급받아 key 변수에 입력합니다.
- 카카오톡 메신저봇R 앱에 코드를 넣고 실행합니다.
- 채팅방에서 !챗 [질문내용] 형식으로 메시지를 보냅니다.
- 예: !챗 안녕하세요
주요 특징
- 간단한 명령어: !챗 으로 시작하는 메시지만 처리
- 에러 처리: try-catch 문을 통해 API 호출 중 발생하는 오류에 대응
- 디버깅 로그: API 응답을 로그로 기록하여 문제 해결에 도움
- 유연한 설정: temperature, max_tokens 등 GPT 모델의 다양한 매개변수를 조정할 수 있어 맞춤형 응답을 제공
커스터마이징을 하려면?
- temperature 조정
- temperature 값을 변경하여 응답의 창의성을 조절 가능
- 0에 가까울수록 일관된 응답을 제공하며, 1에 가까울수록 다양한 응답을 생성
- max_tokens 조정
- max_tokens 값을 변경하여 응답의 길이를 제한 가능
- GPT 모델 선택
- 다른 GPT 모델을 사용하려면 "model" 값을 원하는 모델로 변경하면 됨
728x90
'IT' 카테고리의 다른 글
크롬 오류: ERR_BLOCKED_BY_CLIENT 문제 해결 가이드 📚 (0) | 2024.11.01 |
---|---|
웹사이트 접속 실패 403 Forbidden 오류 해결 방법 🛠️ (2) | 2024.11.01 |
[Windows] "로컬 장치 이름이 이미 사용중입니다" 오류 해결 방법 🌐 (0) | 2024.11.01 |
🐧 리눅스 파일 시스템 구조 완벽 가이드 (0) | 2024.10.31 |
🚀 대규모 트래픽을 위한 리눅스 커널 튜닝 (0) | 2024.10.31 |