728x90

간단한   AI  챗봇 연결을 위해   핵심 역할을 하는 ChatModel, Prompt, 그리고 ChatOptions에 대해 설명을 하고자 한다. 
이 세 가지 요소는 Spring AI를 통해 다양한 LLM(Large Language Models)과 유연하게 상호작용하기 위한 기본 추상화 계층이다.

1. ChatModel: LLM과의 대화 인터페이스
ChatModel은 Spring AI의 핵심 인터페이스로, OpenAI, Google Gemini, Ollama 등 다양한 LLM 제공자와 상호작용하기 위한 표준화된 API를 제공한다.

이 덕분에 개발자는 모델 제공자가 바뀌더라도 코드 변경을 최소화할 수 있다.

ChatModel의 주요 기능은 다음과 같습니다.

  • call(Prompt prompt): Prompt 객체를 입력으로 받아 LLM에 요청을 보내고, 그 응답을 ChatResponse 객체로 받습니다.
  • stream(Prompt prompt): 스트리밍 방식으로 응답을 처리합니다. Flux<ChatResponse>를 반환하여, 실시간으로 생성되는 모델의 응답을 조금씩 받을 수 있습니다. 이는 긴 응답이나 사용자 경험을 향상시킬 때 유용합니다.

2. Prompt: LLM에게 전달할 지시문

Prompt는 LLM에게 전달할 모든 정보와 지시문을 캡슐화하는 객체이다.

단순히 사용자 메시지뿐만 아니라, 시스템 메시지, 도구 호출(Function Calling) 정보 등 대화의 맥락과 방향을 결정하는 모든 것을 담는다.

Prompt의 주요 구성 요소는 다음과 같습니다.

  • List<Message>: LLM에게 전달할 메시지들의 목록입니다. 각 메시지는 역할(role)을 가집니다.
    • User Message: 사용자가 입력한 메시지.
    • System Message: 모델의 행동 양식이나 제약을 설정하는 지시문. 예를 들어, "너는 친절한 AI 어시스턴트야" 같은 역할을 부여할 수 있습니다.
    • Assistant Message: 이전 대화에서 모델이 생성했던 응답. 대화의 맥락을 유지하는 데 사용됩니다.
  • ChatOptions: LLM 호출 시 사용할 모델 관련 옵션들을 포함합니다.


3. ChatOptions: LLM의 행동을 제어하는 설정
ChatOptions는 LLM의 동작을 미세하게 조정할 수 있는 설정 값들을 담고 있다. 이 객체를 통해 모델의 출력 방식이나 특성을 제어할 수 있습니다. 각 모델 제공자마다 고유한 옵션이 있을 수 있지만, Spring AI는 공통적인 옵션을 추상화하여 제공한다.

주요 ChatOptions의 예시는 다음과 같습니다.

  • model: 사용할 LLM의 이름을 지정합니다 (예: gpt-4o, gemini-pro).
  • temperature: 창의성(무작위성)을 조절합니다. 값이 높을수록 더 다양하고 예측 불가능한 응답을 생성하고, 낮을수록 보수적이고 일관된 응답을 만듭니다.
  • maxTokens: 모델이 생성할 수 있는 최대 토큰(단어, 문자) 수를 제한합니다.
  • stopSequences: 모델의 응답 생성을 중단할 특정 문자열들을 지정합니다.





Spring AI의 LLM 호출 흐름

출처 사이오닉 AI

 

 

 

728x90

+ Recent posts