오늘날 PC를 사용자의 작업 방식에 맞게 조정하려면 여러 제어판의 메뉴와 설정을 일일이 찾아봐야 하는 경우가 많습니다. Project G-Assist는 자연어 인터페이스를 통해 RTX GPU 및 기타 PC 설정을 제어할 수 있도록 설계된 실험적인 온디바이스 AI 어시스턴트입니다. G-Assist는 일반적인 NVIDIA App 명령을 실행하고, 성능을 최적화하며, 성능 통계를 모니터링하는 등 다양한 기능을 수행할 수 있습니다. 또한 NVIDIA App Overlay 덕분에 게임을 하거나 콘텐츠를 제작하는 도중에도 Alt-Tab 없이 사용할 수 있습니다.
무엇보다도 G-Assist는 커뮤니티가 플러그인을 통해 확장할 수 있어, 마우스 설정, Spotify에서 재생 중인 음악, IFTTT를 활용한 스마트 디바이스 등 PC 내 다른 하드웨어나 앱을 제어할 수 있습니다.
G-Assist는 AI 기반 루틴을 PC에서 쉽게 구축할 수 있는 방법을 제공합니다. 로컬에서 실행 가능한 소형 언어 모델(SLM)을 포함한 인프라를 제공하며, 개발자는 호출하고자 하는 함수만 정의하면 됩니다. GPT 기반 플러그인 빌더 덕분에 이 과정은 더욱 간단해졌습니다.
이번 블로그 포스트에서는 Twitch 연동을 예시로 들어, 나만의 G-Assist 플러그인을 만드는 방법을 소개합니다. 플러그인이 어떻게 작동하는지, G-Assist와 어떻게 통신하는지, 그리고 처음부터 직접 만드는 방법까지 배워보게 될 것입니다. Python 개발자든, C++ 애호가든, 혹은 이제 막 시작한 입문자든, 빠르고 쉽게 플러그인을 개발할 수 있도록 다양한 도구와 템플릿을 제공하니 걱정 없습니다.

G-Assist 플러그인은 무엇인가요?
G-Assist 플러그인은 새로운 기능을 정의하는 애드온으로, G-Assist 사용자들이 간단한 음성이나 텍스트 프롬프트를 통해 SLM을 활용해 자연어로 플러그인을 실행할 수 있게 해줍니다.
플러그인 명령은 전적으로 사용자 정의에 따라 설정되며, 간단한 매니페스트 형식을 통해 추론 시 SLM이 이를 해석합니다. GitHub에 제공된 템플릿을 사용해 Python 또는 C++로 플러그인을 작성할 수 있습니다. 최소한의 설정만으로도 성능 분석 도구부터 스마트홈 루틴까지 음성 및 텍스트로 접근 가능한 자신만의 도구를 만들 수 있습니다.
시작을 도와줄 도구들
- GPT Plug-in Builder: 플러그인 코드 작성에 함께하는 맞춤형 GPT입니다. 플러그인 코드와 파일 생성, API 및 기능 탐색, 플러그인 아이디어 구상까지 도와줍니다.
- 플러그인 템플릿 (Python 및 C++): 플러그인 구조, 설정, 통신 로직, 함수 정의까지 모두 갖춘 사전 구성 템플릿입니다.
플러그인 예제: Twitch, Discord, Nanoleaf, IFTTT 연동 등 다양한 오픈 소스 플러그인 예제가 계속해서 추가되고 있습니다.
Twitch 플러그인: 스트리머가 방송 중인지 확인하기
실제 예제를 살펴보겠습니다. 이 플러그인은 특정 Twitch 스트리머가 현재 생방송 중인지 확인하고, 방송 제목, 게임, 시청자 수, 시작 시간 등의 정보를 반환합니다.
예시 응답:
ninja is LIVE!
Title: Friday Fortnite!
Game: Fortnite
Viewers: 45,231
Started At: 2024-03-14T12:34:56Z
혹은
shroud is OFFLINE
요구 사항
플러그인을 구축하려면 다음이 필요합니다:
- 시스템에 Python 3.12가 설치되어 있어야 합니다
- Twitch 개발자 앱 (클라이언트 ID와 비밀번호를 얻기 위해)
- GitHub에서 다운로드한 G-Assist Python 플러그인 템플릿
플러그인 구조
플러그인은 다음 네 가지 주요 파일을 포함합니다:
1. manifest.json
플러그인이 제공하는 함수와 파라미터를 정의하며, 이를 통해 G-Assist는 해당 플러그인이 어떤 작업을 수행할 수 있는지 이해하게 됩니다. 함수 및 파라미터 설명은 G-Assist SLM이 사용자 입력을 적절한 함수에 매핑하고, 실행에 필요한 파라미터를 판단하는 데 도움을 줍니다.
{
"manifestVersion": 1,
"executable": "g-assist-plug-in-twitch.exe",
"persistent": false,
"functions": [
{
"name": "check_twitch_live_status",
"description": "Checks if a Twitch user is live and retrieves stream details.",
"tags": ["twitch", "live_status"],
"properties": {
"username": {
"type": "string",
"description": "The Twitch username to check."
}
}
}
]
}
2. config.json
Twitch API 인증에 필요한 Twitch Client ID와 Secret이 포함되어 있는 파일입니다. 이 파일은 민감한 자격 증명을 담고 있으므로 절대 외부에 공유해서는 안 됩니다. 플러그인 디렉터리가 관리자 권한으로 보호되기 때문에, 해당 파일은 시스템 내에서 안전하게 유지됩니다.
{
"TWITCH_CLIENT_ID": "your_client_id_here",
"TWITCH_CLIENT_SECRET": "your_client_secret_here"
}
3. plug-in.py
플러그인의 모든 로직이 포함된 파일로, 인증, API 요청, 응답 파싱, 그리고 Windows 명명 파이프(named pipe)를 통한 G-Assist와의 통신을 담당합니다.
다음은 메인 루프입니다:
def main():
setup_logging()
logging.info("Twitch Plugin Started")
while True:
command = read_command()
if command is None:
continue
for tool_call in command.get("tool_calls", []):
func = tool_call.get("func")
params = tool_call.get("params", {})
if func == "check_twitch_live_status":
response = check_twitch_live_status(params)
write_response(response)
elif func == "shutdown":
return
명령은 다음과 같은 JSON 형식의 메시지로 구성됩니다:
{
"tool_calls": [{
"func": "check_twitch_live_status",
"params": {
"username": "nvidia"
}
}]
}
응답에는 반드시 성공 여부를 나타내는 플래그와 메시지 문자열이 포함되어야 합니다. G-Assist는 Markdown 형식을 지원합니다:
{
"success": true,
"message": "nvidia is LIVE!\nTitle: NVIDIA Gaming Stream\nGame: Cyberpunk 2077\nViewers: 1234"
}<<END>>
Windows 이름 지정 파이프 통신
G-Assist와 플러그인은 Windows의 “명명 파이프(named pipes)”를 통해 통신합니다. 입력 명령은 JSON 메시지 형식으로 플러그인에 전달되며, 응답도 동일한 형식으로 작성하되 응답의 끝을 알리는 <<END>>
태그를 반드시 덧붙여야 합니다.
read_command
와 write_response
함수는 플러그인 템플릿에 포함되어 있습니다. read_command
는 대용량 입력을 처리할 수 있도록 청크 단위로 데이터를 읽고, write_response
는 출력 형식을 지정하고 필수 종료 태그를 추가합니다. 전송 계층은 추상화되어 있으므로, 사용자는 명령 처리에만 집중하면 됩니다.
Twitch API 통합
Twitch와 통신하기 위해 OAuth 2.0 클라이언트 자격 증명 흐름을 사용합니다:
def get_oauth_token():
try:
response = requests.post(
TWITCH_OAUTH_URL,
params={
"client_id": config.get("TWITCH_CLIENT_ID"),
"client_secret": config.get("TWITCH_CLIENT_SECRET"),
"grant_type": "client_credentials"
}
)
return response.json().get("access_token")
except Exception as e:
logging.error(f"Error getting OAuth token: {e}")
return None
토큰을 획득한 후, 사용자가 실시간 상태인지 확인합니다:
def check_twitch_live_status(params: Dict[str, str]):
username = params.get("username")
oauth_token = get_oauth_token()
headers = {
"Client-ID": config.get("TWITCH_CLIENT_ID"),
"Authorization": f"Bearer {oauth_token}"
}
response = requests.get(
TWITCH_STREAM_URL,
headers=headers,
params={"user_login": username}
)
data = response.json().get("data", [])
if data:
stream = data[0]
return {
"success": True,
"message": (
f"{username} is LIVE!\n"
f"Title: {stream['title']}\n"
f"Game: {stream.get('game_name', 'Unknown')}\n"
f"Viewers: {stream['viewer_count']}"
)
}
return {"success": True, "message": f"{username} is OFFLINE"}
더 많은 플러그인 아이디어
GitHub에는 G-Assist를 확장하는 다양한 방식을 보여주는 플러그인 예제가 다수 공개되어 있습니다.
- IFTTT 플러그인: “게임 시작!”처럼 간단한 음성 또는 텍스트 명령으로 스마트홈 루틴을 실행할 수 있습니다.
- Discord 플러그인: 설정한 봇을 통해 Discord 채널에 메시지, 이미지, 동영상을 전송할 수 있습니다. 친구 상태 확인, 게임 활동 조회, 특정 채널에 게시하는 기능 등으로 확장할 수도 있습니다.
- Nanoleaf 플러그인: IP 기반으로 Nanoleaf 조명을 제어하며, G-Assist 채팅을 통해 색상 설정이나 밝기 조절이 가능합니다. 향후에는 사용자 프로필 지원, 현재 기기 상태 읽기, 다중 조명 제어 기능도 추가될 수 있습니다.
각 예제는 서로 다른 통합 방식의 패턴을 보여주며, 모두 오픈 소스로 제공되어 자유롭게 탐색하고, 수정하며, 확장할 수 있습니다.
7월 16일까지 Plug and Play 해커톤에 참가하세요
Project G-Assist 플러그인을 직접 만들어보는 Plug and Play 해커톤에 참가하려면 여기에서 등록하세요. 등록 후에는 새로운 명령을 추가하고, 외부 도구와 연결하며, 특정 요구에 맞춘 AI 워크플로우를 활용하는 맞춤형 G-Assist 플러그인을 개발하면 됩니다. 이 플러그인은 온디바이스에서 동작하며, 텍스트나 음성 명령에 반응하는 AI 기반 기능을 제공합니다. 완성된 플러그인은 제출 양식에 제출하면 됩니다 (자세한 요건은 Plug and Play 페이지 참조).
우수한 플러그인 제출자는 NVIDIA GeForce RTX 5090 노트북, RTX 5080 GPU, 또는 RTX 5070 GPU를 받을 기회를 얻게 됩니다.
해커톤은 오늘부터 2025년 7월 16일까지 진행됩니다.
커뮤니티에 참여하세요
우리는 플러그인 제작을 개방적이고 협업적인 방식으로 만들어가고자 합니다. G-Assist GitHub에서 템플릿, 전체 예제, 문서를 모두 확인할 수 있습니다.
플러그인에 대해 궁금한 점이 있거나 더 배우고 싶다면, 2025년 7월 9일에 열리는 웹세미나 RTX AI Workshop: How to Build a Project G-Assist Plug-In에 등록해 참여하세요. NVIDIA 팀의 설명을 듣고 플러그인 프로젝트에 대해 질문할 수 있는 기회입니다.
또한 Discord에 참여해 여러분의 창작물을 공유하고, G-Assist 관련 대화에 참여하거나 커뮤니티 및 NVIDIA 전문가들의 도움을 받을 수 있습니다.
관련 리소스
- GTC 세션: 게임에서 실시간 음성 제어 AI 팀원 만들기
- GTC 세션: 멀티 GPU 스케일링 시작하기 — 분산 라이브러리
- GTC 세션: OpenUSD 배우기 — 기초부터 실전 개념까지
- SDK: Highlights
- SDK: NVIDIA Texture Tools-Photoshop Plug in
- SDK: CloudXR