ð§ Adaptive Graph of Thoughts
ããŒã«ã«ð§ Adaptive Graph of Thoughts ã«ã€ããŠ
Adaptive Graph of Thoughts ã¯ãNeo4j ã°ã©ãããŒã¿ããŒã¹äžã§ ASR-GoT ç§åŠæšè«ãã¬ãŒã ã¯ãŒã¯ãå®è£ ãã MCP ãµãŒããŒã§ãã仮説ã®åæããšããã³ã¹ã®è¿œè·¡ãæ§é çã«è¡ãããç ç©¶çšéã«åããããŠããŸãã
äž»ãªæ©èœ
- 018 段éã®æšè«ãã€ãã©ã€ã³
- 02åçãªç¥èã¹ãã¢ãšããŠã® Neo4j ã°ã©ã
- 03倿¬¡å ã®ä¿¡é ŒåºŠã¹ã³ã¢ãªã³ã°
- 04PubMedãGoogle ScholarãExa Search ã«ãããšããã³ã¹æ€çŽ¢
- 05Docker ããã³ KubernetesïŒHelmïŒã«ãããããã€
掻çšã·ãŒã³
- 01ç 究仮説ãä¿¡é ŒåºŠã¹ã³ã¢ä»ãã§è©äŸ¡
- 02ç§åŠæŠå¿µéã®é¢ä¿ã®ãããã³ã°
- 03æç®ãšããã³ã¹ã«åºã¥ãäž»åŒµã®æ€èšŒ
MCP 察å¿
æ¬ãããžã§ã¯ã㯠MCP ãµãŒããŒãšããŠåäœããPOST /mcp ãšã³ããã€ã³ãã§ asr_got.query ã¡ãœããã Claude Desktop ãªã©ã®ã¯ã©ã€ã¢ã³ãã«å ¬éããŸãããŸã scientific_reasoning_queryãanalyze_research_hypothesisãexplore_scientific_relationshipsãvalidate_scientific_claims ã® 4 ã€ã®ããŒã«ãæäŸããŸãã
èšå®
ããŒã«ã«ãµãŒããŒã®èšå®ã¯ã©ã®ã¯ã©ã€ã¢ã³ãã§ãå ±éã§ããã³ããŒããŠã¯ã©ã€ã¢ã³ãã® MCP èšå®ãã¡ã€ã«ã«è²Œãä»ããŠãã ããã
ãã®ãµãŒããŒã®ããã±ãŒãžããªã¢ãŒããšã³ããã€ã³ãã¯ãŸã ååŸã§ããŠããŸããããããžã§ã¯ãã® README ã®æé ã«åŸã£ãŠãã ããã
ããŒã«
ããŒã«ã«ãµãŒããŒã®ããŒã«ã¯ãã·ã³äžã§èµ·åããŠåããŠååŸã§ããŸããã¡ã³ãããŒã¯ãŸã ããŒã«äžèЧãæäŸããŠããŸããã
詳现
ð§ Adaptive Graph of Thoughts
ð ç§åŠç ç©¶ã®ããã®æ¬¡äžä»£AIæšè«ãã¬ãŒã ã¯ãŒã¯
ã°ã©ãæ§é ãæŽ»çšããAIã·ã¹ãã ãç§åŠçæšè«ã«åãçµãæ¹æ³ãå€é©ããŸã
ð æŠèŠ
Adaptive Graph of ThoughtsïŒAGoTïŒã¯ãAdvanced Scientific Reasoning Graph-of-ThoughtsïŒASR-GoTïŒãã¬ãŒã ã¯ãŒã¯ãå®è£ ãã髿§èœMCP ãµãŒããŒã§ããNeo4jã°ã©ãããŒã¿ããŒã¹ãåçãªãã¬ããžã¹ãã¢ãšããŠäœ¿çšãã**Model Context ProtocolïŒMCPïŒ**ãéããŠæšè«æ©èœãæäŸããããšã§ãClaude Desktopãªã©ã®AIã¢ã·ã¹ã¿ã³ããšã·ãŒã ã¬ã¹ã«é£æºã§ããŸãã
äž»ãªç¹é·
| ç¹é· | 説æ |
|---|---|
| ð§ ã°ã©ãããŒã¹ã®æšè« | 8ã€ã®å°éçãªæšè«ã¹ããŒãžãåãã倿®µéãã€ãã©ã€ã³ |
| ð åçãªä¿¡é ŒåºŠã¹ã³ã¢ãªã³ã° | äžç¢ºå®æ§ã®å®éåã䌎ã倿¬¡å è©äŸ¡ |
| ð¬ ãšããã³ã¹ã®çµ±å | PubMedãGoogle ScholarãExa Searchãžã®ãªã¢ã«ã¿ã€ã æ¥ç¶ |
| â¡ é«ããã©ãŒãã³ã¹ | Neo4jã®ã°ã©ãæäœã«å¯Ÿå¿ããéåæFastAPI |
| ð MCPãããã³ã« | Claude Desktopããã³VS Codeãšã®ãã€ãã£ã飿º |
| ð³ ã¯ã©ãŠãå¯Ÿå¿ | Dockerããã³KubernetesïŒHelmïŒãå šé¢ãµããŒã |
ðïž ã·ã¹ãã ã¢ãŒããã¯ãã£
%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#4A90D9', 'primaryTextColor': '#fff', 'primaryBorderColor': '#2C5F8A', 'lineColor': '#666', 'secondaryColor': '#52B788', 'tertiaryColor': '#F8F9FA'}}}%%
graph TB
subgraph Clients["ð¥ïž Client Layer"]
CD["ð€ Claude Desktop"]
VS["ð» VS Code / Cursor"]
CC["ð Custom MCP Clients"]
end
subgraph Gateway["ð API Gateway Layer"]
MCP_EP["â¡ MCP Endpoint\n/mcp"]
NLQ_EP["ð NLQ Endpoint\n/nlq"]
GE_EP["ð Graph Explorer\n/graph"]
HE["ð Health Check\n/health"]
end
subgraph Core["ð§ Core Application Layer"]
direction TB
GTP["ð GoT Processor\nOrchestrator"]
subgraph Pipeline["ASR-GoT 8-Stage Pipeline"]
S1["1ïžâ£ Init &\nContext Setup"]
S2["2ïžâ£ Query\nDecomposition"]
S3["3ïžâ£ Hypothesis\nGeneration"]
S4["4ïžâ£ Evidence\nIntegration"]
S5["5ïžâ£ Pruning &\nMerging"]
S6["6ïžâ£ Subgraph\nExtraction"]
S7["7ïžâ£ Synthesis &\nComposition"]
S8["8ïžâ£ Reflection &\nAudit"]
S1 --> S2 --> S3 --> S4 --> S5 --> S6 --> S7 --> S8
end
GTP --> Pipeline
end
subgraph Services["ð ïž Service Layer"]
LLM["ð€ LLM Service\nOpenAI / Claude"]
EDB["ð Evidence DB\nPubMed · Scholar · Exa"]
end
subgraph Storage["ðïž Storage Layer"]
NEO4J["ðŠ Neo4j\nGraph Database"]
CONFIG["âïž Config\n(YAML + ENV)"]
end
Clients -->|"MCP JSON-RPC\nBearer Auth"| Gateway
MCP_EP --> GTP
NLQ_EP --> LLM
GE_EP --> NEO4J
GTP --> Services
GTP --> NEO4J
LLM --> EDB
style Clients fill:#E3F2FD,stroke:#1565C0
style Gateway fill:#F3E5F5,stroke:#6A1B9A
style Core fill:#E8F5E9,stroke:#1B5E20
style Services fill:#FFF8E1,stroke:#F57F17
style Storage fill:#FCE4EC,stroke:#880E4F
ð ASR-GoTæšè«ãã€ãã©ã€ã³
8段éã®æšè«ãã€ãã©ã€ã³ã¯ãæªå å·¥ã®è³ªåãããã¬ããžã°ã©ãã«ä¿åãããå æ¬çã§ãšããã³ã¹ã«è£ä»ããããåçãžãšå€æããŸãïŒ
%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#7B68EE', 'edgeLabelBackground': '#fff'}}}%%
flowchart LR
Q([â Scientific\nQuestion]) --> S1
subgraph S1["Stage 1: Initialization"]
I1["Set context\n& parameters"]
I2["Create root\ngraph node"]
I1 --> I2
end
subgraph S2["Stage 2: Decomposition"]
D1["Identify\nsub-questions"]
D2["Map knowledge\ndomains"]
D1 --> D2
end
subgraph S3["Stage 3: Hypothesis"]
H1["Generate\nhypotheses"]
H2["Score initial\nconfidence"]
H1 --> H2
end
subgraph S4["Stage 4: Evidence"]
E1["Query PubMed\nScholar · Exa"]
E2["Integrate\nevidence nodes"]
E1 --> E2
end
subgraph S5["Stage 5: Pruning"]
P1["Remove weak\nhypotheses"]
P2["Merge related\nnodes"]
P1 --> P2
end
subgraph S6["Stage 6: Subgraph"]
SG1["Extract key\nsubgraphs"]
SG2["Score relevance\n& centrality"]
SG1 --> SG2
end
subgraph S7["Stage 7: Synthesis"]
C1["Compose final\nnarrative"]
C2["Build\nconclusions"]
C1 --> C2
end
subgraph S8["Stage 8: Reflection"]
R1["Audit\nconsistency"]
R2["Return final\nresult"]
R1 --> R2
end
S1 --> S2 --> S3 --> S4 --> S5 --> S6 --> S7 --> S8
S8 --> A([â
Reasoned\nAnswer])
style Q fill:#FFD700,stroke:#DAA520,color:#000
style A fill:#90EE90,stroke:#228B22,color:#000
ðžïž ãã¬ããžã°ã©ãã®ã³ãã¯ããŒã
Neo4jãã¬ããžã°ã©ãã¯ãæšè«æ§é ãè±ããªã³ãã¯ããŒã ãšããŠæããŸããããŒãã¯æŠå¿µã仮説ããšããã³ã¹ã衚ãããšããžã¯æå³çããã³è«ççãªé¢ä¿ã衚ããŸãïŒ
%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#6C63FF', 'primaryTextColor': '#fff', 'edgeLabelBackground': '#f0f0ff'}}}%%
graph TD
RootQuery["ð Root Query\n(Session Node)"]
subgraph Decomp["ð Decomposition Layer"]
D1["ð Sub-question A\n[domain: biology]"]
D2["ð Sub-question B\n[domain: chemistry]"]
D3["ð Sub-question C\n[domain: physics]"]
end
subgraph Hypo["ð¡ Hypothesis Layer"]
H1["ð Hypothesis 1\nconf: 0.85"]
H2["ð Hypothesis 2\nconf: 0.72"]
H3["ð Hypothesis 3\nconf: 0.61"]
H4["ð Hypothesis 4\nconf: 0.90"]
end
subgraph Evid["ð¬ Evidence Layer"]
E1["ð PubMed Paper\nPMID: 38492"]
E2["ð Scholar Article\nDOI: 10.1038/..."]
E3["ð Exa Result\nexpert consensus"]
E4["ð Statistical\nMeta-analysis"]
end
subgraph Synth["ð¯ Synthesis Layer"]
C1["â
Merged\nConclusion A"]
C2["â
Merged\nConclusion B"]
FINAL["ð Final Answer\n[confidence: 0.88]"]
end
RootQuery -->|"DECOMPOSES_TO"| D1
RootQuery -->|"DECOMPOSES_TO"| D2
RootQuery -->|"DECOMPOSES_TO"| D3
D1 -->|"GENERATES"| H1
D1 -->|"GENERATES"| H2
D2 -->|"GENERATES"| H3
D3 -->|"GENERATES"| H4
H1 -->|"SUPPORTED_BY"| E1
H2 -->|"SUPPORTED_BY"| E2
H3 -->|"CONTRADICTED_BY"| E3
H4 -->|"SUPPORTED_BY"| E4
H1 -->|"MERGES_WITH"| C1
H4 -->|"MERGES_WITH"| C1
H2 -->|"MERGES_WITH"| C2
C1 -->|"SYNTHESIZES_TO"| FINAL
C2 -->|"SYNTHESIZES_TO"| FINAL
style RootQuery fill:#4A90D9,color:#fff,stroke:#2C5F8A
style FINAL fill:#27AE60,color:#fff,stroke:#1E8449
style H3 fill:#E74C3C,color:#fff,stroke:#C0392B
ð ãªã¯ãšã¹ããããŒ
%%{init: {'theme': 'base'}}%%
sequenceDiagram
actor User as ð€ Claude / MCP Client
participant API as â¡ FastAPI Server
participant Auth as ð Auth Middleware
participant GTP as ð§ GoT Processor
participant NEO as ðŠ Neo4j DB
participant LLM as ð€ LLM Service
User->>API: POST /mcp {"method": "asr_got.query"}
API->>Auth: Verify Bearer Token
Auth-->>API: â
Authorized
API->>GTP: Process query
GTP->>NEO: Create session + root node
loop 8 Pipeline Stages
GTP->>LLM: Generate hypotheses / summaries
LLM-->>GTP: LLM response
GTP->>NEO: Write nodes & relationships
NEO-->>GTP: Confirmed
end
GTP->>NEO: Extract final subgraph
NEO-->>GTP: Final answer graph
GTP-->>API: Structured result
API-->>User: JSON-RPC response\n{result, confidence, graph_state}
ð ããã¥ã¡ã³ã
APIãªãã¡ã¬ã³ã¹ãèšå®ã¬ã€ããè²¢ç®ã¬ã€ãã©ã€ã³ãå«ãå®å šãªããã¥ã¡ã³ãïŒ
â¡ïž Adaptive Graph of Thoughts ããã¥ã¡ã³ããµã€ã
ð ãããžã§ã¯ãæ§æ
Adaptive-Graph-of-Thoughts-MCP-server/
âââ ð .github/ # CI/CD workflows (CodeQL, Dependabot)
âââ ð agt_setup/ # Interactive setup wizard CLI
âââ ð config/ # settings.yaml configuration
âââ ð docs_src/ # MkDocs documentation source
âââ ð helm/ # Kubernetes Helm chart
âââ ð src/
â âââ ð adaptive_graph_of_thoughts/
â âââ ð api/ # FastAPI routes & schemas
â âââ ð application/ # GoTProcessor orchestrator
â âââ ð domain/ # 8-stage pipeline & models
â âââ ð infrastructure/ # Neo4j utilities
â âââ ð services/ # LLM & external API clients
âââ ð tests/ # Comprehensive test suite
âââ Dockerfile
âââ docker-compose.yml
âââ pyproject.toml
âââ README.md
ð ã¯ã€ãã¯ã¹ã¿ãŒã
git clone https://github.com/SaptaDey/Adaptive-Graph-of-Thoughts-MCP-server.git
cd Adaptive-Graph-of-Thoughts-MCP-server
poetry install
poetry run python -m agt_setup # Interactive credential setup wizard
poetry run uvicorn adaptive_graph_of_thoughts.main:app --reload
ã€ã³ã¿ã©ã¯ãã£ããªAPIããã¥ã¡ã³ãã¯ãhttp://localhost:8000/docsãã芧ãã ããã
ð ã¯ããã«
ãããã€ã®åææ¡ä»¶
Adaptive Graph of Thoughts ãå®è¡ããåã«ïŒããŒã«ã«ã§å®è¡ããå ŽåããŸã㯠Neo4j ãå«ãŸããä»å±ã® docker-compose.prod.yml ã䜿çšããã« Docker çµç±ã§å®è¡ããå ŽåïŒã次ã®ç¹ã確èªããŠãã ããã
-
å®è¡äžã® Neo4j ã€ã³ã¹ã¿ã³ã¹ïŒAdaptive Graph of Thoughts ã«ã¯ãNeo4j ã°ã©ãããŒã¿ããŒã¹ãžã®æ¥ç¶ãå¿ èŠã§ãã
- APOC ã©ã€ãã©ãªïŒéèŠãªç¹ãšããŠãNeo4j ã€ã³ã¹ã¿ã³ã¹ã«ã¯ APOCïŒAwesome Procedures On CypherïŒã©ã€ãã©ãªãã€ã³ã¹ããŒã«ãããŠããå¿
èŠããããŸããã¢ããªã±ãŒã·ã§ã³ã®æšè«ã¹ããŒãžå
ã«ããè€æ°ã® Cypher ã¯ãšãªã§ã¯ãAPOC ããã·ãŒãžã£ïŒäŸïŒ
apoc.create.addLabelsãapoc.merge.nodeïŒã䜿çšããŸããAPOC ããªããšãã¢ããªã±ãŒã·ã§ã³ã¯æ£ããåäœããŸãããã€ã³ã¹ããŒã«æé ã¯APOC ã®å ¬åŒãŠã§ããµã€ãã§ç¢ºèªã§ããŸãã - èšå®ïŒ
config/settings.yamlïŒãŸãã¯å¯Ÿå¿ããç°å¢å€æ°ïŒã§ãNeo4j ã€ã³ã¹ã¿ã³ã¹ã® URIããŠãŒã¶ãŒåããã¹ã¯ãŒããæ£ããæå®ãããŠããããšã確èªããŠãã ããã - ã€ã³ããã¯ã¹äœæïŒæé©ãªããã©ãŒãã³ã¹ãåŸãã«ã¯ãé©å㪠Neo4j ã€ã³ããã¯ã¹ãäœæãããŠããããšã確èªããŠãã ããã
python scripts/run_cypher_migrations.pyãå®è¡ãããšãä»å±ã® Cypher ãã€ã°ã¬ãŒã·ã§ã³ãèªåçã«é©çšã§ããŸãã詳现ã«ã€ããŠã¯ãNeo4j ã®ã€ã³ããã¯ã¹æŠç¥ãåç §ããŠãã ããã
泚ïŒä»å±ã®
docker-compose.ymlïŒéçºçšïŒãšdocker-compose.prod.ymlïŒæ¬çªçšïŒã«ã¯ãAPOC ã©ã€ãã©ãªããããããèšå®ããã Neo4j ãµãŒãã¹ãå«ãŸããŠãããããDocker Compose ã䜿çšããå Žåã¯ãã®èŠä»¶ãæºãããŸãã - APOC ã©ã€ãã©ãªïŒéèŠãªç¹ãšããŠãNeo4j ã€ã³ã¹ã¿ã³ã¹ã«ã¯ APOCïŒAwesome Procedures On CypherïŒã©ã€ãã©ãªãã€ã³ã¹ããŒã«ãããŠããå¿
èŠããããŸããã¢ããªã±ãŒã·ã§ã³ã®æšè«ã¹ããŒãžå
ã«ããè€æ°ã® Cypher ã¯ãšãªã§ã¯ãAPOC ããã·ãŒãžã£ïŒäŸïŒ
åææ¡ä»¶
- Python 3.11+ïŒ
pyproject.tomlã§æå®ãããŠããŸããäŸïŒDocker ã€ã¡ãŒãžã§ã¯ Python 3.11.xã3.12.xã3.13.x ã䜿çšããŸãïŒ - PoetryïŒäŸåé¢ä¿ã®ç®¡çã«äœ¿çšããŸã
- Docker ãš Docker ComposeïŒã³ã³ãããŒåããããããã€ã«äœ¿çšããŸã
ã€ã³ã¹ããŒã«ãšã»ããã¢ããïŒããŒã«ã«éçºïŒ
-
ãªããžããªãã¯ããŒã³ããŸãïŒ
git clone https://github.com/SaptaDey/Adaptive-Graph-of-Thoughts-MCP-server.git cd Adaptive-Graph-of-Thoughts-MCP-server -
Poetry ã䜿çšããŠäŸåé¢ä¿ãã€ã³ã¹ããŒã«ããŸãïŒ
poetry installããã«ãããä»®æ³ç°å¢ãäœæããã
pyproject.tomlã«æå®ãããå¿ èŠãªããã±ãŒãžããã¹ãŠã€ã³ã¹ããŒã«ãããŸãã -
ä»®æ³ç°å¢ãæå¹ã«ããŸãïŒ
poetry shell -
ã¢ããªã±ãŒã·ã§ã³ãèšå®ããŸãïŒ
# Copy example configuration cp config/settings.example.yaml config/settings.yaml # Edit configuration as needed vim config/settings.yaml -
ç°å¢å€æ°ãèšå®ããŸãïŒä»»æïŒïŒ
# Create .env file for sensitive configuration echo "LOG_LEVEL=DEBUG" > .env echo "API_HOST=0.0.0.0" >> .env echo "API_PORT=8000" >> .env
ã·ãŒã¯ã¬ãã管ç
æ¬çªç°å¢ã§ã¯ãSECRETS_PROVIDER ç°å¢å€æ°ã« awsãgcpããŸã㯠vault ãèšå®ãããšããµããŒã察象ã®ã·ãŒã¯ã¬ãããããŒãžã£ãŒããæ©å¯å€ãååŸã§ããŸããå¿
èŠã«å¿ããŠãåã·ãŒã¯ã¬ããã®ååãæå®ãã <VAR>_SECRET_NAME 倿°ïŒäŸïŒOPENAI_API_KEY_SECRET_NAMEïŒãèšå®ããŠãã ãããã·ãŒã¯ã¬ãããããã€ããŒãèšå®ãããŠããå ŽåãOPENAI_API_KEYãANTHROPIC_API_KEYãNEO4J_PASSWORD ã®å€ã¯èµ·åæã«èªåçã«èªã¿èŸŒãŸããŸãã
-
éçºãµãŒããŒãèµ·åããŸãïŒ
python src/adaptive_graph_of_thoughts/main.pyãŸãã¯ããã现ããå¶åŸ¡ããå ŽåïŒ
uvicorn adaptive_graph_of_thoughts.main:app --reload --host 0.0.0.0 --port 8000API ã¯
http://localhost:8000ã§å©çšã§ããŸãã
âš ã»ããã¢ãããŠã£ã¶ãŒã
åæèšå®ãç°¡åã«ããã€ã³ã¿ã©ã¯ãã£ããªãŠã£ã¶ãŒããå©çšã§ããŸãã
poetry run python -m agt_setup
次ã«ãhttp://localhost:8000/setup ã«ã¢ã¯ã»ã¹ããŠããŠã§ãããŒã¹ã®æé ãå®äºããŠãã ããã
ã»ããã¢ãããŠã£ã¶ãŒãã®ã㢠GIF ã¯ãããã¥ã¡ã³ãã®å®å šçã§è¡šç€ºãããŸãã
Docker ãããã€
graph TB
subgraph "Development Environment"
A[ðšâð» Developer] --> B[ð³ Docker Compose]
end
subgraph "Container Orchestration"
B --> C[ðŠ Adaptive Graph of Thoughts Container]
B --> D[ð Monitoring Container]
B --> E[ðïž Database Container]
end
subgraph "Adaptive Graph of Thoughts Application"
C --> F[â¡ FastAPI Server]
F --> G[ð§ ASR-GoT Engine]
F --> H[ð MCP Protocol]
end
subgraph "External Integrations"
H --> I[ð€ Claude Desktop]
H --> J[ð Other AI Clients]
end
style A fill:#e1f5fe
style B fill:#f3e5f5
style C fill:#e8f5e8
style F fill:#fff3e0
style G fill:#ffebee
style H fill:#f1f8e9
-
Docker Compose ã§ããã«å§ããïŒ
# Build and run all services docker-compose up --build # For detached mode (background) docker-compose up --build -d # View logs docker-compose logs -f adaptive-graph-of-thoughts -
åå¥ã® Docker ã³ã³ãããŒïŒ
# Build the image docker build -t adaptive-graph-of-thoughts:latest . # Run the container docker run -p 8000:8000 -v $(pwd)/config:/app/config adaptive-graph-of-thoughts:latest -
æ¬çªç°å¢ãžã®ãããã€ïŒ
# Use production compose file docker-compose -f docker-compose.prod.yml up --build -d
Kubernetes ãžã®ãããã€ïŒHelmïŒ
Kubernetes ã¯ã©ã¹ã¿ãŒã§ Adaptive Graph of Thoughts ãå®è¡ããããã®æå°éã® Helm ãã£ãŒãã helm/agot-server ã«çšæãããŠããŸãã
helm install agot helm/agot-server
helm/agot-server/values.yaml ã®å€ã倿ŽããŠãã€ã¡ãŒãžãªããžããªããªãœãŒã¹å¶éããã®ä»ã®ãªãã·ã§ã³ãèšå®ããŠãã ããã
ç¹å®ã®ãããã€ãã©ãããã©ãŒã ã«é¢ããæ³šæäºé
- Smithery.aiïŒä»å±ã®
smithery.yamlã䜿çšããŠãããã€ããŸãã- GitHub ãªããžããªã Smithery ã«æ¥ç¶ãããããã€ãã¯ãªãã¯ããŸãã
- ã³ã³ããã¯
PORTç°å¢å€æ°ïŒããã©ã«ãã¯8000ïŒã§ãªãã¹ã³ããŸãã - ãã«ã¹ãã§ãã¯ã§ã¯
/healthãšã³ããã€ã³ãã䜿çšããŸãã Dockerfileãšdocker-compose.prod.ymlã¯ãã³ã³ããã®èšå®äŸã§ãã
- ãµãŒãã¹ã«ã¢ã¯ã»ã¹ããïŒ
- API ããã¥ã¡ã³ãïŒ
http://localhost:8000/docs - ãã«ã¹ãã§ãã¯ïŒ
http://localhost:8000/health - MCP ãšã³ããã€ã³ãïŒ
http://localhost:8000/mcp
- API ããã¥ã¡ã³ãïŒ
ð MCP ã¯ã©ã€ã¢ã³ããšã®çµ±å
察å¿ããŠãã MCP ã¯ã©ã€ã¢ã³ã
Adaptive Graph of Thoughts ã¯ãããŸããŸãª MCP ã¯ã©ã€ã¢ã³ããšã®çµ±åã«å¯Ÿå¿ããŠããŸãã
- Claude Desktop - STDIO ãš HTTP ãå®å šã«ãµããŒã
- VS Code - MCP æ¡åŒµæ©èœãä»ããŠå©çš
- ã«ã¹ã¿ã MCP ã¯ã©ã€ã¢ã³ã - æ±çšçãªèšå®ãå©çšå¯èœ
ã¯ã©ã€ã¢ã³ãã®ã¯ã€ãã¯ã»ããã¢ãã
Claude Desktop / VS Code ã®èšå®
{
"mcpServers": {
"adaptive-graph-of-thoughts": {
"command": "python",
"args": ["-m", "adaptive_graph_of_thoughts.main"],
"cwd": "/path/to/Adaptive-Graph-of-Thoughts-MCP-server",
"env": {
"NEO4J_URI": "bolt://localhost:7687",
"NEO4J_USER": "neo4j",
"NEO4J_PASSWORD": "your_password",
"MCP_TRANSPORT_TYPE": "stdio"
}
}
}
}
å©çšå¯èœãª MCP ããŒã«
| ããŒã« | 説æ |
|---|---|
scientific_reasoning_query | ã°ã©ãåæãçšããé«åºŠãªç§åŠçæšè« |
analyze_research_hypothesis | ä¿¡é ŒåºŠã¹ã³ã¢ãªã³ã°ã«ãã仮説è©äŸ¡ |
explore_scientific_relationships | æŠå¿µéã®é¢ä¿ã®ãããã³ã° |
validate_scientific_claims | ãšããã³ã¹ã«åºã¥ãäž»åŒµã®æ€èšŒ |
ð API ãšã³ããã€ã³ã
Adaptive Graph of Thoughts ãå ¬éããŠãã䞻㪠API ãšã³ããã€ã³ãã¯æ¬¡ã®ãšããã§ãã
-
MCP ãããã³ã«ãšã³ããã€ã³ãïŒ
POST /mcp- ãã®ãšã³ããã€ã³ãã¯ãClaude Desktop ãªã©ã® MCP ã¯ã©ã€ã¢ã³ããšã®éä¿¡ã«äœ¿çšããŸãã
asr_got.queryã¡ãœããã®ãªã¯ãšã¹ãäŸïŒ{ "jsonrpc": "2.0", "method": "asr_got.query", "params": { "query": "Analyze the relationship between microbiome diversity and cancer progression.", "parameters": { "include_reasoning_trace": true, "include_graph_state": false } }, "id": "123" }- ãã®ä»ã«å¯Ÿå¿ããŠãã MCP ã¡ãœããã«ã¯ã
initializeãšshutdownããããŸãã
-
ãã«ã¹ãã§ãã¯ãšã³ããã€ã³ãïŒ
GET /health- ã¢ããªã±ãŒã·ã§ã³ã®ç°¡æçãªãã«ã¹ã¹ããŒã¿ã¹ãè¿ããŸãã
- ã¬ã¹ãã³ã¹äŸïŒ
{ "status": "healthy", "version": "0.1.0" }
以åèšèŒãããŠããé«åºŠãª API ãšã³ããã€ã³ãïŒäŸïŒ/api/v1/graph/queryïŒã¯çŸåšã®ããŒãžã§ã³ã§ã¯å®è£
ãããŠããããå°æ¥çãªéçºã«åããŠä¿çãããŠããŸãã
ã»ãã·ã§ã³ã®åŠçïŒsession_idïŒ
çŸåšãAPI ãªã¯ãšã¹ãïŒäŸïŒasr_got.queryïŒã§å©çšã§ããã¬ã¹ãã³ã¹ã«ãå«ãŸãã session_id ãã©ã¡ãŒã¿ãŒã¯ãäž»ã«åäžã®å®å
šãªã¯ãšãªãšã¬ã¹ãã³ã¹ã®ãµã€ã¯ã«ãèå¥ã»è¿œè·¡ããããã«äœ¿çšãããŸãããŸãã鲿éç¥ïŒgot/queryProgress ãªã©ïŒãå
ã®ã¯ãšãªãšé¢é£ä»ããããã«ã䜿çšãããŸãã
ã·ã¹ãã 㯠session_id ãçæããŠäœ¿çšããŸãããAdaptive Graph of Thoughts ã¯çŸåšãåã session_id ã䜿çšããåŸç¶ã®ã¯ãšãªã§ã以åã®ã¯ãšãªã®è©³çްãªã°ã©ãç¶æ
ãæšè«ã³ã³ããã¹ããèªåçã«èªã¿èŸŒãã§åå©çšãããããªãçã®è€æ°ã¿ãŒã³ã®äŒè©±ã®ç¶ç¶ã«ã¯å¯Ÿå¿ããŠããŸãããçŸæç¹ã§ã¯ãåã¯ãšãªã¯ç¬ç«ããŠåŠçãããŸãã
ä»åŸã®æ¡åŒµïŒæ°žç¶ã»ãã·ã§ã³
Adaptive Graph of Thoughts ã®ä»åŸã®æ¡åŒµãšããŠãæ°žç¶ã»ãã·ã§ã³ã®å®è£ ãèããããŸããããã«ããããŠãŒã¶ãŒã¯æ¬¡ã®ããšãå¯èœã«ãªãããã察話çã§çºå±çãªæšè«ããã»ã¹ãå®çŸã§ããŸãã
- ç¶æ
ã®æ°žç¶åïŒ ã¯ãšãªããçæãããã°ã©ãã®ç¶æ
ãšé¢é£ããæšè«ã³ã³ããã¹ããã
session_idã«é¢é£ä»ããŠããããã Neo4j ããŒã¿ããŒã¹å ã«ä¿åããŸãã - ç¶æ
ã®åèªã¿èŸŒã¿ïŒ æ¢åã®
session_idãæå®ããŠæ°ããã¯ãšãªãéä¿¡ãããéã«ãã·ã¹ãã ã¯ä¿åãããç¶æ ãåèªã¿èŸŒã¿ããåŸç¶åŠçã®åºçºç¹ãšããŠå©çšã§ããŸãã - æšæ²ãšæ¡åŒµïŒ æ°ããã¯ãšãªãèªã¿èŸŒãŸããã°ã©ããšé£æºã§ããããã«ããŸããããšãã°ã以åã®ä»®èª¬ãæšæ²ããããæ¢åã®æ§é ã«æ°ãã蚌æ ã远å ãããã確ç«ãããã³ã³ããã¹ãã«åºã¥ããŠå¥ã®æšè«çµè·¯ãæ¢çŽ¢ãããã§ããŸãã
æ°žç¶ã»ãã·ã§ã³ã®å®è£ ã«ã¯ã次ã®ãããªå ç¢ãªæ¹éã®çå®ãå¿ èŠã§ãã
- Neo4j ã§ã»ãã·ã§ã³åºæã®ã°ã©ãããŒã¿ãå¹ççã«ä¿åãååŸããæ¹æ³ã
- ã»ãã·ã§ã³ããŒã¿ã®ã©ã€ããµã€ã¯ã«ïŒäœæãæŽæ°ãæå¹æéåããªã©ïŒã®ç®¡çã
- æ°ããã¯ãšãªãæ¢åã®ã»ãã·ã§ã³ã³ã³ããã¹ããã°ã©ãã«çµ±åã倿ŽããŸãã¯æ¡åŒµããããã®é«åºŠãªããžãã¯ã®èšèšã
ããã¯ãAdaptive Graph of Thoughts ã®å¯Ÿè©±æ©èœãå€§å¹ ã«åŒ·åã§ããéèŠãªæ©èœã§ããæ°žç¶ã»ãã·ã§ã³æ©èœã®èšèšãšå®è£ ã«é¢ããã³ãã¥ããã£ããã®è²¢ç®ãæè¿ããŸãã
ä»åŸã®æ¡åŒµïŒéåæããã³äžŠåã®ã¹ããŒãžå®è¡
çŸåšãAdaptive Graph of Thoughts ã®æšè«ãã€ãã©ã€ã³ã¯ã8 ã€ã®ã¹ããŒãžãé æ¬¡å®è¡ããŸããè€éãªã¯ãšãªãžã®å¯Ÿå¿ãããã©ãŒãã³ã¹ã®ãããªãæé©åã«åããŠããã€ãã©ã€ã³ã®äžéšãéåæãŸãã¯äžŠåã«å®è¡ããæ¹æ³ã®æ€èšããä»åŸã®æ¡åŒµãšããŠèããããŸãã
䞊ååã®åè£ïŒ
- 仮説ã®çæïŒ
HypothesisStageã¯ãDecompositionStageãç¹å®ãã忬¡å ã®ä»®èª¬ãçæããŸããç°ãªãç¬ç«ããæ¬¡å ã®ä»®èª¬ãçæããããã»ã¹ã¯ã䞊ååã§ããå¯èœæ§ããããŸããããšãã°ã3 ã€ã®æ¬¡å ã«åè§£ãããå Žåãããããã®æ¬¡å ã®ä»®èª¬ãçæãã 3 ã€ã®äžŠåã¿ã¹ã¯ãå®è¡ã§ããŸãã - 蚌æ ã®çµ±åïŒäžéšïŒïŒ
EvidenceStageã§è€æ°ã®ä»®èª¬ãè©äŸ¡å¯Ÿè±¡ã«éžã°ããå Žåããããã®ç°ãªã仮説ã«å¯Ÿãããèšç»å®è¡ããã§ãŒãºïŒèšŒæ åéã®ã·ãã¥ã¬ãŒã·ã§ã³ïŒã䞊è¡ããŠå®è¡ã§ããå¯èœæ§ããããŸãã
課é¡ãšèæ ®äºé ïŒ
ã¹ããŒãžå®è¡ã®äžŠååã«ã¯ãæ éã«ç®¡çããå¿ èŠãããè€éãã䌎ããŸãã
- ããŒã¿ã®äžè²«æ§ïŒ åæå®è¡ãããæäœãç¹ã« Neo4j ããŒã¿ããŒã¹ãžã®æžã蟌ã¿ïŒè€æ°ã®ä»®èª¬ããŒãã蚌æ ããŒãã®åæäœæãªã©ïŒã¯ãããŒã¿ã®æŽåæ§ã確ä¿ããç«¶åç¶æ ãåé¿ã§ããããæ éã«åŠçããå¿ èŠããããŸãã䞊åå®è¡ã«å¯Ÿå¿ããå ç¢ãªäžæ ID çææ¹åŒãå¿ èŠã§ãã
- ãã©ã³ã¶ã¯ã·ã§ã³ç®¡çïŒ åææžã蟌ã¿ã«å¯Ÿãã Neo4j ã®ãã©ã³ã¶ã¯ã·ã§ã³ãé©åã«ç®¡çããå¿ èŠããããŸãã
- äŸåé¢ä¿ã®ç®¡çïŒ ä»ã®ã¹ããŒãžã®åºåã«å®éã«äŸåããã¹ããŒãžïŒãŸãã¯ã¹ããŒãžã®äžéšïŒããæ£ããé åºã§å®è¡ãããããã«ããããšãéèŠã§ãã
- ãªãœãŒã¹ã®äœ¿çšïŒ 䞊åå®è¡ã«ãã£ãŠããªãœãŒã¹ïŒCPUãã¡ã¢ãªãããŒã¿ããŒã¹æ¥ç¶ïŒã®éèŠãå¢ããå¯èœæ§ããããŸãã
- è€éãïŒ
GoTProcessorå šäœã®å¶åŸ¡ãããŒãããè€éã«ãªããŸãã
çŸåšã®é次å®è¡ã§ã¯ãæç¢ºã§ç®¡çããããããŒã¿ãããŒã確ä¿ãããŸããäžæ¹ãç¬ç«ããæ¬¡å ã®ä»®èª¬çæãªã©ã察象ãçµã£ã䞊ååã¯ãAdaptive Graph of Thoughts ã®ä»åŸã®ããŒãžã§ã³ã§ããã©ãŒãã³ã¹äžã®ã¡ãªãããããããå¯èœæ§ããããŸããããã¯ãåŒãç¶ãç ç©¶éçºã®å¯Ÿè±¡ãšãªãåéã§ãã
𧪠ãã¹ããšå質ä¿èšŒ
| 𧪠ãã¹ã | ð åãã§ã㯠| âš Lint | ð ã«ãã¬ããž |
poetry run pytest make test |
poetry run mypy src/ pyright src/ |
poetry run ruff check . poetry run ruff format . |
poetry run pytest --cov=src coverage html |
éçºã³ãã³ã
GitHub Actions ã®ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ãã€ãã©ã€ã³ã§ã¯ããã¹ããCodeQL åæãMicrosoft Defender for DevOps ã«ããã»ãã¥ãªãã£ã¹ãã£ã³ãå®è¡ããŸãã
# Run full test suite with coverage using Poetry
poetry run pytest --cov=src --cov-report=html --cov-report=term
# Or using Makefile for the default test run
make test
# Run specific test categories (using poetry)
poetry run pytest tests/unit/stages/ # Stage-specific tests
poetry run pytest tests/integration/ # Integration tests
poetry run pytest -k "test_confidence" # Tests matching pattern
# Type checking and linting (can also be run via Makefile targets: make lint, make check-types)
poetry run mypy src/ --strict # Strict type checking
poetry run ruff check . --fix # Auto-fix linting issues
poetry run ruff format . # Format code
# Pre-commit hooks (recommended)
poetry run pre-commit install # Install hooks
poetry run pre-commit run --all-files # Run all hooks (runs Ruff and MyPy)
# See Makefile for other useful targets like 'make all-checks'.
ð¥ ããã·ã¥ããŒãã®ç޹ä»
ããã·ã¥ããŒãã®ã㢠GIF ã¯è¿æ¥å ¬éäºå®ã§ãã
ð» IDE ãšã®çµ±å
vscode-agot æ¡åŒµæ©èœã䜿çšããŠãVS Code ãããµãŒããŒã«ã¯ãšãªãå®è¡ã§ããŸããæ¡åŒµæ©èœãèµ·åããã³ãã³ããã¬ãããã AGoT: Ask Graph⊠ãå®è¡ããŠãã ããã
â ãã©ãã«ã·ã¥ãŒãã£ã³ã°
ãµãŒããŒãèµ·åããªãå ŽåããŸãã¯ã»ããã¢ããã§ãšã©ãŒãå ±åãããå Žåã¯ãNeo4j ã€ã³ã¹ã¿ã³ã¹ãå®è¡äžã§ããã.env ã®èªèšŒæ
å ±ãæ£ããããšã確èªããŠãã ããã詳现ã«ã€ããŠã¯ãã³ã³ãœãŒã«åºåã確èªããŠãã ããã
ðºïž ããŒãããããšä»åŸã®å±æ
Adaptive Graph of Thoughts ã®å°æ¥ã«åããŠãç§ãã¡ã¯ãããããããããªããžã§ã³ãæããŠããŸããããŒããããã«ã¯ãã°ã©ãå¯èŠåã®åŒ·åãArxiv ãªã©ã®ãããªãããŒã¿ãœãŒã¹ãšã®çµ±åãã³ã¢æšè«ãšã³ãžã³ã®ãããªãæ¹è¯ãå«ãŸããŠããŸãã
äºå®ããŠããæ©èœãé·æçãªç®æšã®è©³çްã«ã€ããŠã¯ãããŒããããïŒããã¥ã¡ã³ããµã€ãã§ãã芧ããã ããŸãïŒãã確èªãã ããã
ð€ è²¢ç®
è²¢ç®ãæè¿ããŸãïŒå§ãæ¹ããã©ã³ãæŠç¥ãã³ãŒãã¹ã¿ã€ã«ãªã©ã®è©³çްã«ã€ããŠã¯ãè²¢ç®ã¬ã€ãã©ã€ã³ïŒããã¥ã¡ã³ããµã€ãã§ãã芧ããã ããŸãïŒãã確èªãã ããã
ð ã©ã€ã»ã³ã¹
ãã®ãããžã§ã¯ã㯠Apache License 2.0 ã®ããšã§ã©ã€ã»ã³ã¹ãããŠããŸããã©ã€ã»ã³ã¹ã
ð ã»ãã¥ãªãã£
è匱æ§ã®å ±åæ¹æ³ããµããŒã察象ããŒãžã§ã³ã®è©³çްã«ã€ããŠã¯ãã»ãã¥ãªãã£ããªã·ãŒãã確èªãã ããã
ð è¬èŸ
- ã°ã©ãåææ©èœãæäŸãã NetworkX ã³ãã¥ããã£
- åªãã Web ãã¬ãŒã ã¯ãŒã¯ãæäŸãã FastAPI ããŒã
- å ç¢ãªããŒã¿æ€èšŒãæäŸãã Pydantic
- ã€ã³ã¹ãã¬ãŒã·ã§ã³ãšãã£ãŒãããã¯ãå¯ããŠãã ãã£ãç§åŠç ç©¶ã³ãã¥ããã£
ç§åŠç ç©¶ã³ãã¥ããã£ã®ããã«ãâ€ïžã蟌ããŠéçºããŸãã
Adaptive Graph of Thoughts - ã€ã³ããªãžã§ã³ããªã°ã©ãæ§é ãéããŠç§åŠçæšè«ã鲿©ãããŸã
ã³ã¡ã³ã
MCP ã¯åããŠã§ããïŒ
ãããã³ã«ã®æŠèŠããæåã®ãµãŒããŒã®å°å ¥ãŸã§ãããããçåã«ãŸãšããŠçããŸãã
AI ã¢ããªã±ãŒã·ã§ã³ãå€éšã®ããŒã«ãããŒã¿ãœãŒã¹ã«çµ±äžçãªæ¹æ³ã§æ¥ç¶ããããã®ãªãŒãã³ãªãããã³ã«ã§ããã¯ã©ã€ã¢ã³ãã¯ã¢ãã«ãšã®å¯Ÿè©±ãæ ããMCP ãµãŒããŒã¯ããŒã«ã»ãªãœãŒã¹ã»ããã³ãããã³ãã¬ãŒããæäŸããŸããæšæºã¡ãã»ãŒãžã§ããåãããããã1 ã€ã®ãµãŒããŒãè€æ°ã®ã¯ã©ã€ã¢ã³ãã§åå©çšã§ããŸãã
