본 시연은 로컬 언어 모델 Spark-X2.5-1.7B가 과학적 요구사항으로부터 매개변수를 추출하고, 이 결과를 SymPy 계산 스킬 라이브러리에 입력하여 물리적으로 유효한 해를 도출하는 과정을 보여줍니다. 이는 LLM의 정보 추출 능력과 전문 수학 라이브러리의 정확성을 결합한 에이전트 워크플로우의 예시입니다.
핵심 포인트
LLM(Spark-X2.5-1.7B)가 과학적 요구사항에서 매개변수를 성공적으로 추출함.
추출된 데이터를 SymPy와 같은 전문 계산 라이브러리에 연결하여 사용함.
양수 차원 검증을 통해 수학적 해 중 물리적으로 유효한 답(5cm, 8cm)만 도출함.
LLM의 추론 능력과 정밀 계산기의 정확성을 결합하는 에이전트 패턴을 제시함.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
합성 직사각형 포장재 삽입물이 40 cm²의 면적을 가집니다. 이 물체의 길이는 너비보다 3 cm 더 깁니다. 방정식을 풀면 −8과 5가 반환됩니다. 음수 근은 유효한 대수학적 해입니다: 이에 해당하는 길이는 −5이며, 그 곱은 40입니다. 물리적인 치수는 추가 확인이 필요합니다.
이번 로컬 시연에서 Spark-X2.5-1.7B는 합성 요구사항으로부터 두 개의 매개변수를 추출했습니다. 저장된 동일한 응답은 SymPy 계산에 입력되었습니다. 양수 차원 검사를 거치자 너비 5 cm, 길이 8 cm가 남았으며, 원래의 면적과 간격이 확인되었습니다.
각 프로젝트가 실제로 수행한 작업
Spark-X2.5-1.7B는 여기서 로컬로 사용된 언어 모델입니다. 이의 역할은 매개변수 추출이었습니다. 실제 모델 요청 중 하나가 다음을 반환했습니다:
{"area_cm2": 40, "gap_cm": 3}
1
2
Scientific Agent Skills는 과학 계산 스킬 라이브러리입니다. 이 라이브러리는 2026년 10월 16일에 포착된 실시간 GitHub 트렌딩 일일 스냅샷에서 세 번째 항목으로 나타났습니다. 우리는 여기에 고정된 저장소 커밋 a1043ef544e3a100c28e70a736b6cf32554d0677의 SymPy skill version 1.5를 따랐습니다: 기호 생성, 정확한 숫자 사용, 해의 영역 지정 및 결과 검증.
로컬 시연 어댑터가 이 단계들을 연결합니다. 이는 실제 저장된 모델 JSON을 읽고, 필드 이름과 정수형 타입, 허용 범위 등을 확인한 다음, 기호(symbols)와 Integer 객체로부터 SymPy 표현식을 구성합니다. 이것은 프로젝트 간의 공식적인 통합이라기보다는 로컬로 구현된 시연입니다.
이 이미지들은 모델(model.png)과 풀이(solve.png)의 직접적인 가로 방향 크롭본이며, 실제 에피소드에서 사용된 원래 터미널 기록의 마지막 프레임입니다. 이 이미지들에는 동일한 실제 모델 호출 및 그에 따른 기호 계산 읽기 응답이 표시됩니다. 오직 프레임 경계만 잘렸을 뿐, 출력 텍스트는 변경되지 않았습니다. 원래 명령어들은 모두 종료 코드 0을 반환했습니다. 보이는 데이터는 공개된 도구/모델 정보와 합성 테스트 입력으로 구성되어 있습니다.
풀이(Solve), 대입(substitute) 후 작업 제약 조건 확인하기
x를 너비라고 합시다. 길이는 x+3입니다. 너비 곱하기 (너비 더하기 3)은 마흔과 같습니다. 소괄호는 전체 길이 표현을 하나로 묶어줍니다. 원래 식은 다음과 같습니다:
x × (x + 3) − 40 = 0
1
2
SymPy 1.14.0은 domain=S.Reals를 사용하여 풀이(solveset)를 수행했습니다. 이 결과로 -8과 5가 반환되었습니다. 두 근처리를 원래 식에 대입했을 때 잔차는 0이었습니다.
너비
길이
원래 식의 잔차
두 치수 모두 양수
−8
−5
0
아니요
5
8
0
예
양수 너비와 길이를 필터링하여 최종적으로는 5×8 cm를 유지했습니다. 마지막 확인은 5×8=40이고 8−5=3이라는 것이었습니다. 교훈은 원래의 물리적 조건을 계산에 반영해야 한다는 것입니다. 음의 근이 모델 오류를 보여주지는 않습니다.
위의 가로 방향 크롭본들은 이 에피소드에서 사용된 실제 모델 및 솔버 기록(rec/model.mp4와 rec/solve.mp4)에서 가져온 것이며, 추가적인 모델 요청은 없습니다.
실제 환경 및 증거
이 실행은 Windows, Python 3.12, SymPy 1.14.0 및 mpmath 1.3.0을 사용했습니다. 추론 도구는 llama.cpp b10833 (9ac8c408a)였습니다. 요청과 응답 모두 Spark-X2.5-1.7B를 식별합니다. 가중치는 공개 XHToken 모델에서 파생된 ngquocvinh community Q4_K_M GGUF입니다.
모델 요청은 temperature=0, thinking 비활성화 및 정수 JSON 스키마를 사용했습니다. 이 시연에서는 HTTP 200의 실제 모델 요청 하나가 기록되었습니다. 로컬 결과물에는 요청, 원시 응답, 매개변수 JSON, SymPy 결과, 명령어 종료 코드 및 원래 녹화본이 보존됩니다. SymPy는 소비한 매개변수 파일의 SHA-256을 기록했습니다. 어댑터는 정확한 정수를 사용하며 모델 생성 표현 문자열을 평가하지 않습니다.
이 합성 예제는 구체적인 데이터 흐름(요구 사항 매개변수, 기호 계산, 그런 다음 원래 제약 조건 확인)을 검증합니다. 유용한 결과는 확인 가능한 크기와 다른 근을 거부하는 명시적인 이유입니다. 단일 예제가 광범위한 정확도 또는 비즈니스 성능 결과를 확립하지는 않습니다.
가장 작은 확인부터 시작하기
SymPy로 Python을 준비하고, 고정된 스킬을 열어 동일한 표현식에 대한 실제 영역 해를 실행합니다:
import sympy as sp
x = sp.symbols('x', real=True)
original = x * (x + sp.Integer(3)) - sp.Integer(40)
...
1
2
3
4
5
먼저 근이 {−8, 5}이고 두 치환 잔차가 모두 0인지 확인합니다. 그런 다음 양의 차원을 요구하고 원래 면적과 간격을 확인합니다. 자연어 추출 단계를 재현하려면 로컬 Spark-X2.5-1.7B 추론 서비스와 SymPy에 전달하기 전에 정수 JSON을 검증하는 어댑터를 사용하십시오. 시연 스크립트인 model-call.mjs 및 solve-sizing.py는 로컬 전송 디렉터리에 보존됩니다. 공개 시작점은 연결된 모델과 스킬입니다.
영상:
음악 및 라이선싱
음악: 미셸 롱도(Michel Rondeau)의 “트럼펫 캐논과 푸가 No.1293”; 작곡, 연주 및 출판: 미셸 롱도 (트럼펫 두 대); IMSLP #1065200; CC BY-SA 4.0. 발췌본, 침묵 제거, 크로스페이드, 레벨 조정 및 내레이션 혼합.