Releases: SonAIengine/graph-tool-call
Releases · SonAIengine/graph-tool-call
v0.15.0 — Workflow Chain API, Visual Editor, SSE Transport
Highlights
Workflow Planning API
tg.plan_workflow("process a refund")→ returns ordered execution chain with prerequisites- Manual editing:
plan.insert_step(),plan.remove_step(),plan.reorder() - JSON save/load for sharing workflows
Visual Workflow Editor
- Browser-based drag-and-drop editor (
plan.open_editor()) - Zero-dependency single HTML file
SSE/Streamable-HTTP Transport
- Remote MCP deployment:
graph-tool-call serve --transport sse --port 8000 - 1:N client connections (team sharing)
Architecture Improvements
- Graph → candidate injection (removed from wRRF fusion)
set_weights()bug fix- Resource-first search generalized (removed 49 GitHub-specific aliases)
Benchmarks
- 1068 tool stress test (GitHub full API): 78% Recall@5
- 6-strategy competitive benchmark across 9 datasets
Install
```bash
pip install graph-tool-call==0.15.0
```
Full Changelog: v0.14.0...v0.15.0
v0.13.1
Release 0.13.1
v0.8.0
Release 0.8.0
v0.6.1
Bug Fixes
- wRRF 가중치 버그 수정 —
keyword_weight,graph_weight,embedding_weight가 실제로 적용되지 않고 모두 1.0으로 하드코딩되어 있던 버그 수정. embedding 활성화 시 설정값(keyword=0.2, graph=0.5, embedding=0.3)이 정상 반영됨 - poetry.lock 동기화 — CI 실패 원인이던 lock 파일 갱신
New Features
- Embedding 범용 어댑터 (
wrap_embedding()) — LLM 어댑터(wrap_llm())와 동일한 패턴:"openai/text-embedding-3-large"— OpenAI Embeddings API"ollama/nomic-embed-text"— Ollama local embeddings"sentence-transformers/all-MiniLM-L6-v2"— local sentence-transformers"litellm/..."— litellm gatewaycallable(list[str]) -> list[list[float]]— custom function
- Corpus 기반 자동 stopword — DF 50% 이상 토큰을 자동 감지하여 BM25 query에서 제거. 하드코딩 제거, API마다 적응
set_weights()API — wRRF fusion 가중치를 사용자가 조절 가능:tg.set_weights(keyword=0.1, embedding=0.5) # embedding 비중 증가
Search Quality Improvements
x2bee 1077 tools 기준:
- "search products": ❌
getDeliveryMgmtList→ ✅getDisplayGoodsList(정확 매칭) - "회원 정보 수정":
⚠️ saveMemberDelivery→ ✅getMemberInfo(1위 개선) - "주문 취소": ✅
cancelOrder(유지)
322 tests passing, 6 skipped
v0.6.0
What's New
Multi-Stage Retrieval Pipeline
- Cross-encoder reranking — second-stage precision improvement using
cross-encoder/ms-marco-MiniLM-L-6-v2 - MMR diversity — Maximal Marginal Relevance reranking reduces redundant results
- History-aware retrieval — demotes already-used tools, boosts next-step tools via graph proximity
Graph Conversion Quality
- Response→Request data flow — detects PRECEDES relations from shared
$refbetween response and request schemas - Layer 2 confidence tuning — reduced false positives in substring-based dependency detection
- K-means clustering stabilization — deterministic seed selection, increased iterations
Integrated Pipeline
- ai-api-lint integration —
from_url(lint=True)auto-fixes poor OpenAPI specs before ingest (missing descriptions, error responses, schema enhancements) - LLM keyword enrichment — generates English search keywords for non-English tool descriptions to improve BM25
LLM Auto-Detection Adapter
wrap_llm()— pass any LLM without implementingOntologyLLMABC:callable(str) -> str- OpenAI client (
openai.OpenAI()) - String shorthand:
"ollama/qwen2.5:7b","openai/gpt-4o-mini","litellm/..."
build_ontology()— convenience method for ontology construction after tool registration
Installation
pip install graph-tool-call # core
pip install graph-tool-call[embedding] # + cross-encoder, sentence-transformers
pip install graph-tool-call[lint] # + ai-api-lint
pip install graph-tool-call[all] # everything318 tests passing, 7 skipped
v0.4.0 — MCP Annotation-Aware Retrieval
graph-tool-call v0.4.0 — MCP Annotation-Aware Retrieval
Phase 2.5: query intent와 tool annotation alignment를 retrieval signal로 활용하는 4-source wRRF 파이프라인.
주요 기능
- MCP Annotation 모델:
readOnlyHint,destructiveHint,idempotentHint,openWorldHint - MCP tool ingest:
tg.ingest_mcp_tools(tools, server_name="myserver") - Intent Classifier: 한/영 키워드 기반 zero-LLM query intent 분류
- Annotation Scorer: intent↔annotation alignment scoring (4번째 wRRF source, weight=0.2)
- OpenAPI 자동 추론: HTTP method → MCP annotation 매핑 (RFC 7231)
- 255 tests (74개 신규), 기존 API 하위 호환
설치
pip install graph-tool-call # 코어
pip install graph-tool-call[all] # 모든 기능Quick Start
from graph_tool_call import ToolGraph
tg = ToolGraph()
tg.ingest_mcp_tools([
{"name": "read_file", "description": "Read a file",
"inputSchema": {"type": "object", "properties": {"path": {"type": "string"}}},
"annotations": {"readOnlyHint": True}},
{"name": "delete_file", "description": "Delete a file",
"inputSchema": {"type": "object", "properties": {"path": {"type": "string"}}},
"annotations": {"destructiveHint": True}},
])
# "삭제" intent → destructive tool 우선
results = tg.retrieve("파일 삭제해줘", top_k=5)Full Changelog: v0.3.0...v0.4.0
v0.3.0
graph-tool-call v0.3.0 — 첫 공개 릴리스
LLM 에이전트를 위한 그래프 기반 도구 검색 엔진.
주요 기능
- Graph-structured tool retrieval: NetworkX DiGraph 기반 도구 관계 모델링
- Hybrid search: BM25 + Embedding + RRF 기반 3-Tier retrieval (BASIC/ENHANCED/FULL)
- OpenAPI 3.x / Arazzo 1.0.0 파서: API 스펙에서 자동 도구 그래프 구축
- 자동 의존성 감지: CRUD 패턴, 경로 계층, 스키마 공유 기반
- 5-Stage 중복 탐지: rapidfuzz + embedding 기반 유사 도구 식별
- 온톨로지 자동 구성: Auto + LLM-Auto 모드 (Ollama/OpenAI)
- LangChain 통합:
as_langchain_tools()지원
설치
pip install graph-tool-call # 코어
pip install graph-tool-call[all] # 모든 기능