Gemini API를 이용해서 사용자가 회의록을 입력하면 GEMINI API가 자동으로 이슈를 생성해주는 기능을 만들었다.
GEMINI API를 쓰기 위해서는 먼저 apiKey를 받아와야만 한다. apiKey는 GEMINI API 사이트에서 발급받아서 사용한다.
API가 발급된 이후에는
import { GoogleGenAI } from '@google/genai';
이 라이브러리를 이용해서 JS에서 API를 사용할 수 있는데
여기에는
model : 어떤 모델을 사용할지
content : AI에게 부탁할 명령
config : AI 프롬프트
이렇게 3개의 요소가 필수적으로 구성되어야 한다. AI의 설정 또한 가능한데 나는 AI의 생각속도를 최대한 빠르게 구현하기 위해서
thinkingBudget: 0,
로 AI의 생각하는데 별도의 시간을 할애하지 않도록 설정하였다.
전체 코드는
const response = await this.genai.models.generateContent({ model: "gemini-2.5-flash",
contents: `reporter_id: ${user.id}\n project_id: ${projectId}\n ${text}`,
config:{
systemInstruction: `작성한 프롬프트 내용`,
thinkingConfig:{
thinkingBudget: 0,
}
} });
위와 같이 된다.
결과는 json 형식으로 반환되는데 ai가 반환한 결과물을 한번 걸러주기 위해서
// ```json으로 시작하고 ```로 끝나는 경우 제거
if (cleanJson.startsWith('```json')) {
cleanJson = cleanJson.replace(/^```json\s*/, '');
}
if (cleanJson.startsWith('```')) {
cleanJson = cleanJson.replace(/^```\s*/, '');
}
if (cleanJson.endsWith('```')) {
cleanJson = cleanJson.replace(/\s*```$/, '');
}
위와 같이 AI의 대답을 문자열 파싱으로 한번 정제해주었다.
프론트엔드에서는 파싱된 json문을 이용해 사용자에게 이슈카드들을 추천해주고 사용자는 이중에서 자신에게 맞는 API를 취사선택해서 이슈카드를 생성할 수 있다.