Cogency 소개
AI 기술이 발전하면서 다양한 작업을 자동화하는 AI 에이전트 시스템들이 등장하고 있습니다. 특히 자연어 처리 모델이 점점 고도화되면서, 사람처럼 질문에 답하거나 복잡한 정보를 조합하는 능력이 강화되고 있습니다. 그러나 이런 AI 에이전트를 구축하려면 여전히 많은 코드와 설정, 복잡한 흐름 제어가 필요하며 이는 개발자들에게 진입장벽이 되곤 합니다. 이러한 배경에서 등장한 것이 바로 Cogency입니다.
Cogency는 “3줄로 작동하는 AI 에이전트”라는 슬로건처럼, 최소한의 코드로 멀티스텝 추론을 수행하는 지능형 에이전트를 만들 수 있게 도와주는 프레임워크입니다. Python 환경에서 설치 및 실행이 매우 간단하며, 다양한 LLM 제공자(OpenAI, Anthropic, Google 등)를 자동으로 감지하고, 툴 선택과 실행, 결과 필터링까지 자동으로 처리합니다. 무엇보다도 추론 과정이 실시간으로 스트리밍되며, 사람이 보기에 이해하기 쉬운 형태로 추론(reasoning) 과정을 보여줍니다.
개발자 입장에서는 복잡한 LLM 설정이나 프롬프트 구성 없이도, 필요한 기능을 툴로 구성하고 에이전트를 호출하면 끝입니다. 내부적으로는 Plan → Reason → Act → Reflect → Respond(PRARR) 구조를 따라 동작하며, 매우 직관적인 로그로 모든 단계를 확인할 수 있습니다. 따라서 AI 추론 과정을 투명하게 검토하고 디버깅할 수 있으며, 다양한 상황에 맞춰 손쉽게 확장할 수도 있습니다.
Cogency는 기존의 LLM 프레임워크와 확연히 다른 UX를 제공합니다. LangChain이나 LlamaIndex 같은 도구들은 강력하지만 설정이 복잡하고, 툴 연결이나 추론 단계 커스터마이징에 많은 시간과 노력이 필요합니다. 반면 Cogency는 3줄의 코드로 동작하며, 다양한 API 키를 .env
파일에서 자동 감지해 설정 과정조차 생략할 수 있습니다. 특히 스트리밍 추론과 실행 로그가 내장되어 있어 LangChain보다 사용자 경험이 뛰어난 점도 큰 차별점입니다.
Cogency 설치 및 시작하기
pip를 사용하여 Cogency를 설치할 수 있습니다:
pip install cogency
이후, .env
파일을 만들고 다음과 같은 API 키를 설정하면, Cogency는 자동으로 이를 감지합니다:
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
GEMINI_API_KEY=your-key-here
Cogency가 지원하는 LLM 및 Embedding 모델은 다음과 같습니다:
- LLM: OpenAI (GPT-4, GPT-3.5), Anthropic (Claude), Google (Gemini), xAI (Grok), Mistral
- Embedding: OpenAI, Nomic, Sentence Transformers 등
Cogency의 주요 구조 및 기능
PRARR 아키텍처
Cogency는 다음과 같은 단계를 따릅니다:
📋 PLAN → 요청 분석 및 툴 필터링
🧠 REASON → 툴 사용 전략 결정
⚡ ACT → 툴 실행
🔍 REFLECT → 결과 정제
💬 RESPOND → 최종 응답 생성
이 과정은 모두 스트리밍으로 제공되며, 중간 단계 결과도 확인할 수 있습니다.
에이전트 생성 및 실행
기본적인 사용 예시는 매우 간단합니다:
from cogency import Agent
agent = Agent("assistant")
result = await agent.run("What is 25 * 43?", mode="summary")
결과는 바로 계산된 값 1075로 출력됩니다.
스트리밍 추론
Cogency는 추론 과정을 실시간으로 스트리밍하며, 다음과 같은 단계를 보여줍니다:
🧠 REASON → ⚡ ACT → 👀 OBSERVE → 💬 RESPOND
agent.stream()
을 사용하며, 사용 예시는 다음과 같습니다:
async for chunk in agent.stream("Find Bitcoin price and calculate value of 0.5 BTC", mode="trace"):
print(chunk, end="", flush=True)
도구 통합
Cogency는 기본적으로 다양한 도구들을 내장하고 있으며, 사용자가 직접 만든 도구도 쉽게 추가할 수 있습니다. 먼저, 도구 사용 방법은 다음과 같습니다:
from cogency import Agent, WeatherTool
agent = Agent("weather_assistant", tools=[WeatherTool()])
사용자 정의 도구는 BaseTool
을 상속받아 새로운 Class를 생성하면 됩니다:
class YourTool(BaseTool):
async def run(self, **params):
# 직접 구현
아래는 간단한 예시입니다:
from cogency import Agent, BaseTool
class TimezoneTool(BaseTool):
def __init__(self):
super().__init__("timezone", "Get time in any city")
async def run(self, city: str):
return {"time": f"Current time in {city}: 14:30 PST"}
라이선스
Cogency 프로젝트는 MIT 라이선스로 공개 및 배포 되고 있습니다. 상업적 사용 제한이 없으며 자유롭게 확장 및 응용할 수 있습니다.
Cogency 프로젝트 GItHub 저장소
다양한 프롬프팅 전략에 대한 문서
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다.
파이토치 한국 사용자 모임
이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일
로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래
쪽에 좋아요
를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~