간단한 채팅 에이전트 만들기

간단한 채팅 에이전트 만들기

Langroid에서 ChatAgent는 LLM과 벡터 데이터베이스 같은 컴포넌트를 감싸는 추상화예요. 대화 기록을 알아서 유지해 주기 때문에, 직접 히스토리를 관리할 필요가 없어요.

출처: https://langroid.github.io/langroid/quick-start/chat-agent/

ChatAgent는 내부에 LLM(ChatAgent.llm), 선택적으로 벡터 DB(ChatAgent.vecdb)를 품고 있어요. 채팅 에이전트를 만들려면 먼저 ChatAgentConfig를 정의하고, 그 설정으로 ChatAgent를 인스턴스화해요.

import langroid as lr

config = lr.ChatAgentConfig(
    name="MyAgent",  # 이름에 공백이 있으면 안 돼요
    llm = lr.language_models.OpenAIGPTConfig(
      chat_model=lr.language_models.OpenAIChatModel.GPT4o,
    ),
    system_message="You are a helpful assistant"
)
agent = lr.ChatAgent(config)

system_message는 에이전트의 llm_response를 호출할 때 첫 번째 "system" 역할 메시지로 LLM에 전달돼요. 이어서 user/assistant 메시지가 번갈아 오죠. Task 객체를 만들 때도 system_message를 지정할 수 있는데, 이 경우 Task의 값이 에이전트의 값을 덮어써요.

이제 에이전트의 응답 메서드를 부르면 돼요. llm_response는 LLM의 답을 돌려주고, user_response는 사람의 입력을 받아들이죠.

response = agent.llm_response("What is 2 + 4?")
if response is not None:
    print(response.content)
response = agent.user_response("add 3 to this")

ChatAgent가 대화 기록을 자동으로 쌓아 주니까, 직접 상태를 들고 다니며 히스토리를 이어 붙일 필요가 없어요.

더 알아보기