간단한 채팅 에이전트 만들기
간단한 채팅 에이전트 만들기
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가 대화 기록을 자동으로 쌓아 주니까, 직접 상태를 들고 다니며 히스토리를 이어 붙일 필요가 없어요.