10P by xguru 9일전 | ★ favorite | 댓글과 토론
  • Red Hat Node.js 팀이 LLM과 Node.js, TypeScript/JavaScript 통합 방안을 실험
  • 여러 프레임워크를 비교하며 특히 tool/function 호출과 에이전트 동작 방식을 중점적으로 검토
  • 최근 출시된 Llama Stack의 기능과 Node.js와의 통합 가능성을 분석

Llama Stack 설정 및 실행 방법

  • Llama Stack은 API 표준화를 목표로 다양한 구현체를 배포하는 모듈형 프레임워크
  • Ollama 기반 컨테이너 사용 시 가장 쉬운 실행 방법 제공
  • 실행 스크립트 예시를 통해 서버 설정:
    • 모델: meta-llama/Llama-3.1-8B-Instruct
    • 포트: 8321
    • Ollama 서버 IP: 10.1.2.38
  • Ollama에서 모델을 미리 실행해야 하며, 매일 1회 이상 사용해 keepalive 유지 필요
  • 문서 엔드포인트(/docs)를 통해 API 스키마와 인터랙티브 테스트 가능

첫 Node.js 애플리케이션 예시

  • llama-stack-client-typescript 라이브러리를 사용해 Llama Stack과 통신
  • 두 개의 툴 정의:
    • favorite_color_tool: 도시/국가 기반 색상 정보 제공
    • favorite_hockey_tool: 도시/국가 기반 아이스하키 팀 정보 제공
  • 질문 시나리오를 통해 툴 호출 흐름 테스트
  • 초기 문제점: 툴에서 필요한 정보가 없을 경우 명확한 유도문이 출력되지 않음
  • 해결 방법: 응답 메시지에 "assistant" 단어 삽입으로 흐름 자연스럽게 개선됨

Llama Stack에서의 tool 호출 처리 방식

  • chatCompletion() API 사용 시 툴 호출은 직접 처리 필요
  • handleResponse() 함수를 통해 툴 요청을 감지하고 결과를 다시 메시지로 전달
  • tool_choice는 기본적으로 "auto" 설정이나, 툴이 있으면 사용하려는 경향이 강함
  • 질문이 툴과 무관한 경우에도 툴 사용 시도를 포기하고 ‘답변 불가’로 처리되는 현상 관찰됨

MCP와 Llama Stack 통합 실험

  • MCP(Model Context Protocol)를 통해 툴을 외부 서버에 호스팅하고 다양한 프레임워크와 공유 가능
  • MCP 서버는 Supergateway를 통해 stdio 기반 서버를 SSE 방식으로 브리지 처리
  • MCP 서버 등록 후, Llama Stack agent API를 사용하여 MCP 툴 자동 호출 가능
  • agent API는:
    • 상태/메시지 관리 자동 처리
    • 툴 호출 흐름을 프레임워크가 내부적으로 수행
  • 다만 툴 호출 로그는 직접 볼 수 없으며, 최종 응답만 확인 가능

로컬 환경 접근을 위한 MCP 활용

  • MCP 서버를 로컬 환경에서 stdio 방식으로 실행하여 Llama Stack과 연결 가능
  • MCP 서버의 툴 정의 JSON을 Llama Stack 호환 형식으로 변환하는 코드 필요
  • mcpClient.callTool()을 통해 LLM 응답 흐름 안에서 툴 결과 반환 가능
  • 이를 통해 중앙화 서버가 아닌 로컬 앱 환경 접근 시나리오 구현 가능

마무리

  • Node.js 환경에서 Llama Stack을 통한 LLM 및 툴 호출 통합 실습 진행
  • 다양한 방법: 로컬 툴, 원격 MCP, 로컬 MCP를 통한 다양한 활용 사례 제공
  • 특히 JavaScript/TypeScript 개발자들에게 실질적인 코드 예제와 흐름을 제시함
  • 앞으로 LLM과 Node.js를 통합하고 싶은 개발자에게 유익한 출발점 역할

추가 자료