ChatGPT의 공개 이후 자연스러운 대화를 위해 디자인된 AI 어플리케이션이 급증했습니다. 하지만, 그 어플리케이션들의 실질적인 유용성은 자동으로 액션을 수행하는 기능이 부족하여 제한되고 있다.
변화된 Agent의 개념은 이러한 갭을 다룹니다. Agent AI는 시각적 자극, 자연어 입력 및 기타 환경에 기반한 데이터를 이해하여 의미있는 구체적인 행동을 생성할 수 있는 대화형 시스템이다.[1]
Agents are not only going to change how everyone interacts with computers. They’re also going to upend the software industry, bringing about the biggest revolution in computing since we went from typing commands to tapping on icons.
Agent는 모든 사람들이 컴퓨터와 상호작용 하는 방법을 바꾸는 것만이 아닙니다. 명령어를 타이핑 하는 것에서 아이콘을 누르는 것으로 바뀐 이후 컴퓨팅 분야에서 가장 큰 혁명을 가져오면서 소프트웨어 산업 전반을 뒤흔들 것입니다.
The future of Agents, Bill Gates. [2]
인간이 다른 동물들에 비해 가지는 주요 장점은 도구를 사용한다는 것입니다. 이점 또한 AI Agent의 주요 능력으로 Andrew Ng도 언급하였습니다.[3]
하지만 tool의 다양성과 tool에 관련된 운영 오버헤드 때문에 tool을 강건하게 사용할 수 있는 AI Agent를 만드는 것은 어렵습니다.
AI Agent 개발이 빠르게 발전하고 있지만, 현재 LLM stack ecosystem과 상당한 gap이 있다. AI Agent 개발자가 직면한 tool을 사용하는 문제를 다루는데 맞춤형인 제품이 없다는 것이다. 이 공백을 메우기 위해 우리는 AI Agent의 강건한 tool 사용 능력을 향상시키는 사용하기 쉽고 믿을만한 기능을 제공하는 플랫폼 NPi를 만들었다.
4월 25일 우리는 NPi(v0.0.1)을 Github에 무료, 오픈소스 플랫폼으로 공개하였습니다. NPI는 Tool Use API를 제공하여 AI Agent가 여러 소프트웨어 tool, application과 상호작용하며 동작하는 것을 지원합니다.
NPi Examples에서 NPi를 사용한 경우를 확인할 수 있습니다.
NPi의 주요 목표는 통일된 인터페이스(a unified interface)를 제공하여 이 함수를 이용하여 LLM이 원활하게 다른 소프트웨어와 어플리케이션 생태계와 통합가능하게 하는 것이다. NPi가 모델과 가상 세계이 가상 세계를 접속하는 게이트웨이 역할을 한다.( NPi serves as a gateway for these models to access the virtual world)
NPi의 핵심 원리는 in-app planning이다. 이를 위해 사용자는 작업을 single-app 하위 작업으로 나누어야 합니다. 각 작업은 하나의 어플리케이션으로 제한됩니다. 그 다음 NPi는 이러한 하위 작업들을 일련의 함수 호출로 해석하고 규칙 기반 방식으로 실행하여 정확한 제어를 보장합니다.
분할 정복(divide-and-conquer)이라고 알려진 이 방법은 복잡한 문제를 해결하기 위한 일반적인 전략으로 NPi 설계의 핵심입니다.
현재까지 우리는 아래 내용을 포함하는 NPi 핵심 기능을 구현하였습니다.
우리는 LLM이 어플리케이션과 상호작용 가능한 바로 사용가능한 API를 제공합니다.
from npiai.app.google import Calendar
from npiai.app.github import GitHub
from npiai.app.twitter import Twitter
from openai import OpenAI
# Use case 1: directly interact with the application
github = GitHub()
github.chat("...")
# Use case 2: integrate application with OpenAI
calendar = Calendar()
calendar.chat("...")
client = OpenAI()
response = client.chat.completions.create(
model="gpt-3.5-turbo-0125",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What's on my calendar today?"},
],
tools=[calendar.as_openai_tool()],
tool_choice="auto", # auto is default, but we'll be explicit
)
# Use cases 3: for non-API friendly cases, a visual-based approach was applied, powered by Playwright and GPT-4V
twitter = Twitter(visual=True)
twitter.chat("what's the @wellswfwang latest post?")
내부적으로는 NPi가 특정 어플리케이션의 SDK 또는 API와 미리 통합되어 주어진 작업을 일련의 함수 호출로 해석합니다.
우리는 지속적으로 SDK나 API의 변화를 모니터링하여 이에 대응하고 있습니다. NPi가 최신 상태이면 이러한 변경 사항을 직접 추적해야하는 부담이 줄어듭니다.
다중 에이전트 어플리케이션을 만드는 깔끔하고 사용하기 쉬운 인터페이스를 제공합니다.
from npiai.core import Agent
agent1 = Agent(prompt="...")
agent1.use(Gmail(), Calendar())
agent2 = Agent(prompt="...")
agent2.use(GitHub())
agent3 = Agent.collaborate(agent1, agent2)
agent3.run(task="...")
agent3이 코디네이터로 동작하여 agent1과 agent2의 동작을 조율합니다. 게다가 agent와 OpenAI도 통합할 수 있습니다.
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="gpt-3.5-turbo-0125",
messages=[...],
tools=[agent3.as_openai_tool()],
tool_choice="auto", # auto is default, but we'll be explicit
)
민감한 작업을 적절하게 다룰때 사람의 참여를 보장하는 간단하고 효과적인 방법이다.
This "human in the loop" approach is an essential step in ensuring that language models behave responsibly, generate accurate responses, and align with ethical and safety standards
이 "human in the loop" 접근은 언어 모델이 책임감있게 동작하고 적절한 응답을 하고 윤리, 안전 기준을 맞추는 것을 보장하는 필수적인 단계입니다.
Large Language Model: Data, Human in the Loop for Fine-Tuning4
예를 들면 Gmail 앱은 메일을 보내는 동작을 민감한 작업으로 사전 설정하여 호출할 때 마다 사람의 승인이 필요하도록 하였습니다.
# These HITL APIs will be released in v0.0.2
from npiai.core.hitl import HITLRequest, HITLResponse, RequestApproved, RequestDenied, Console
from npiai_proto import api_pb2
def human_assist(req: api_pb2.HITLRequest) -> HITLResponse:
console = Console(req) # you can integrate your own workflow
if req.type == api_pb2.ActionType.SAFEGUARD:
result = console.wait()
if result.is_approved():
return RequestApproved
if req.action == api_pb2.ActionType.HUMAN_FEEDBACK:
result = console.wait()
return result.human_message()
return RequestDenied
gmail = Gmail()
gmail.hitl_handler(human_assist)
게다가 사용자 정의된 구성을 제공하여 쉽게 동작을 바꿀 수 있습니다.
이해관계자 간의 회의 시간을 조정하는 임무를 맡은 AI Agent를 상상해보자. 처음에는 Agent가 여러 시간을 제안하고 이메일으로 이해관계자에게 확인 요청을 합니다.

사람의 응답을 기다리는 동안 지연이 자주 일어납니다. 예상하지 못한 소프트웨어 종료나 네트워크 오류 등의 여러 이슈가 발생할 수 있습니다. 이러한 극단적인 경우를 처리하는 것은 프로그래밍엣서 자주 일어나는 문제입니다.
NPi는 이러한 오류들을 관리하도록 설계되어 이러한 중단으로 부터 원활한 복구를 보장하고 개발자가 이러한 복잡한 경우를 직접 해결해야 하는 부담을 덜어줍니다.
게다가 API의 파이튜닝, 평가, 비용 효율성도 로드맵에 있습니다.
NPi는 두개의 주요 컴포넌트 Server 와 Toolkit으로 이루어진 구조를 가지고 있습니다. 특히 개발자는 CLI나 Web Consol을 이용하여 NPi를 커스터마이즈한 다음 NPi SDK를 이용하여 AI Agent가 tool을 사용 가능하도록 할 수 있습니다.

Server는 두 가지 주요 역할이 있습니다.
Toolkit은 개발자 경험을 향상시키기 위해 설계된 tool 모음입니다.
우리는 아직 초기단계에 있는 플랫폼인 NPi를 공개하게 되어 기쁩니다. 우리는 이전 섹션에서 언급된 기능을 구현하기 위해 적극적으로 노력하고 있습니다.
NPi의 임무는 LLM의 팔다리 역할을 하여 AI Agent가 가상세계에 접속하는 것이 가능하게 하는 것입니다. 특히 툴을 사용하는 형태의 AI Agent는 널리 적용되지 않았지만, 우리는 NPi가 이러한 적용을 가속화하고 Artificial General Intelligence (AGI)에 더 가까워 질 것이라고 낙관합니다.
이 비전을 실현하기 위해, 우리는 더 많은 AI Agent 개발자들을 참여시키고 미래를 공동으로 만들어나가는 활기찬 커뮤니티를 구축하기를 열망하고 있습니다.
NPi Roadmap의 개발 계획을 살펴보세요. Github, X.com, Discord Community에서 우리와 소통하세요. 당신은 X.com을 통해 CEO에게 직접 연락할 수도 있습니다.
귀하의 지원, 관찰 및 피드백은 매우 중요하며 매우 감사합니다.
우리는 당신을 NPi 커뮤니티에서 만나길 기대하여 이 흥미로은 미래를 함께하기를 기원합니다.
NPi Blog Introducing NPi