ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (메신저봇R) GPT(OpenAI), Gemini(Google) API 호출 코드
    IT 지식 창고 2025. 5. 4. 12:37

    메신저봇R을 통해서 개인적인 AI봇을 만들 때, 사용한 API 호출 코드입니다.

    공통

    const scriptName = "AI봇";
    /**
     * (string) room
     * (string) sender
     * (boolean) isGroupChat
     * (void) replier.reply(message)
     * (boolean) replier.reply(room, message, hideErrorToast = false) // 전송 성공시 true, 실패시 false 반환
     * (string) imageDB.getProfileBase64()
     * (string) packageName
     */
    function response(room, msg, sender, isGroupChat, replier, imageDB, packageName) {
     if (msg.includes("AI봇") || msg.startsWith("/")){
       if (msg.startsWith("/")){
         msg = msg.slice(1);
       }
       let resGpt = getChatGPTResponse(msg);
       // let resGemini = getGeminiResponse(msg);
       replier.reply(resGemini);
     }
    }

    GPT (OpenAI)

    function getChatGPTResponse(msg){
      const REST_API_KEY = "OPEN_API_KEY";
      let json;
      let result;
      try {
        let data = {
          "model": "gpt-4o-mini",
          "messages": [{
            "role": "system",
            "content": "당신은 AI봇입니다." +
            "질문에 상세하게 답합니다."
          },{"role":"user", "content":msg}]
        };
        
        let response = org.jsoup.Jsoup.connect("https://api.openai.com/v1/chat/completions")
        .header("Authorization", "Bearer " + REST_API_KEY)
        .header("Content-Type", "application/json")
        .requestBody(JSON.stringify(data))
        .ignoreContentType(true) // html이외의 데이터도 전달받으려면, true로 해야함.
        .ignoreHttpErrors(true) // HttpError들도 error가 아니라 결과로 return함.
        .timeout(30000) 30초
        .post()
        
        json = JSON.parse(response.text());
        result = json.choices[0].message.content;
      } catch(e){
        result = e;
        Log.e(e);
      }
      return result;
    }

     

    Gemini(Google)

    function getGeminiResponse(msg){
      const API_URL = "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=GOOGLE_API_KEY";
      let result;
      
      try {
        let data = {
          "contents": [
          {
            "role": "user",
            "parts":[
            {
              "text": "당신은 AI봇 입니다." +
              "질문에 상세하게 대답합니다."}]
          },
          {
            "role": "user",
            "parts":[
            {
             "text": msg 
            }
            ]
          }
          ]
        }
        
        let response = org.jsoup.Jsoup.connect(API_URL)
        .header("Content-Type", "application/json")
        .requestBody(JSON.stringify(data))
        .ignoreContentType(true)
        .ignoreHttpErrors(true)
        .timeout(30000)
        .post()
        json = JSON.parse(response.text());
        result = json.candidates[0].content.parts[0].text;
             
      } catch(e){
        result = e;
        Log.e(e);
      }
      
      return result;
    }

    댓글

Designed by Tistory.