Microsoft AutoGen 연동
Microsoft AutoGen 연동 (autogen)
AutoGen은 AI 에이전트를 만들고, 여러 에이전트가 협력해서 태스크를 해결하도록 돕는 오픈소스 프로그래밍 프레임워크예요. 특징을 몇 가지 짚어볼게요.
- 멀티 에이전트 대화 (Multi-agent conversations) — AutoGen 에이전트는 서로 통신하며 태스크를 해결할 수 있어요. 단일 LLM으로는 만들기 어려운 더 복잡하고 정교한 애플리케이션이 가능해져요.
- 커스터마이징 (Customization) — 애플리케이션의 필요에 맞게 에이전트를 커스터마이징할 수 있어요. 사용할 LLM을 고르거나, 허용할 인간 입력(human input)의 유형이나 사용할 도구도 정할 수 있어요.
- 인간 참여 (Human participation) — AutoGen은 인간의 참여를 허용해요. 필요한 시점에 인간이 에이전트에게 입력과 피드백을 줄 수 있다는 뜻이에요.
AutoGen-Qdrant 통합을 이용하면 Qdrant의 성능 좋은 검색(retrieval)을 기반으로 AutoGen 워크플로우를 만들 수 있어요.
설치 (Installation)
pip install "autogen-agentchat[retrievechat-qdrant]"
사용 방법 (Usage)
설정 (Configuration)
import autogen
config_list = autogen.config_list_from_json("OAI_CONFIG_LIST")
config_list_from_json 함수는 먼저 OAI_CONFIG_LIST 환경 변수를 찾아요. 이 환경 변수는 유효한 JSON 문자열이어야 해요. 없으면 OAI_CONFIG_LIST라는 이름의 JSON 파일을 찾아요. 샘플 파일은 여기에서 볼 수 있어요.
RetrieveChat용 에이전트 만들기 (Construct agents for RetrieveChat)
먼저 RetrieveAssistantAgent와 QdrantRetrieveUserProxyAgent를 초기화해요. RetrieveAssistantAgent의 system_message은 "You are a helpful assistant."로 설정해야 해요. 자세한 지침은 user message에 담아요.
from qdrant_client import QdrantClient
from sentence_transformers import SentenceTransformer
from autogen import AssistantAgent
from autogen.agentchat.contrib.retrieve_user_proxy_agent import RetrieveUserProxyAgent
# 1. "assistant"라는 이름의 AssistantAgent 인스턴스 생성
assistant = AssistantAgent(
name="assistant",
system_message="You are a helpful assistant.",
llm_config={
"timeout": 600,
"cache_seed": 42,
"config_list": config_list,
},
)
sentence_transformer_ef = SentenceTransformer("all-distilroberta-v1").encode
client = QdrantClient(url="http://localhost:6333/")
# 2. "ragproxyagent"라는 이름의 RetrieveUserProxyAgent 인스턴스 생성
# RetrieveUserProxyAgent에 대한 더 자세한 정보는
# https://microsoft.github.io/autogen/docs/reference/agentchat/contrib/retrieve_user_proxy_agent 참고
ragproxyagent = RetrieveUserProxyAgent(
name="ragproxyagent",
human_input_mode="NEVER",
max_consecutive_auto_reply=10,
retrieve_config={
"task": "code",
"docs_path": [
"path/to/some/doc.md",
"path/to/some/other/doc.md",
],
"chunk_token_size": 2000,
"model": config_list[0]["model"],
"vector_db": "qdrant",
"db_config": {"client": client},
"get_or_create": True,
"overwrite": True,
"embedding_function": sentence_transformer_ef, # 기본값은 FastEmbed의 "BAAI/bge-small-en-v1.5"
},
code_execution_config=False,
)
에이전트 실행하기 (Run the agent)
# 새 대화를 시작하기 전에 항상 assistant를 리셋해요.
assistant.reset()
# ragproxyagent로 assistant에게 보낼 프롬프트를 초기 메시지로 생성해요.
# assistant가 받아서 응답을 생성하고, 응답은 다시 ragproxyagent로 보내져 처리돼요.
# 종료 조건이 충족될 때까지 대화가 계속돼요.
qa_problem = "What is the .....?"
chat_results = ragproxyagent.initiate_chat(
assistant, message=ragproxyagent.message_generator, problem=qa_problem
)