mirror of
https://github.com/open-jarvis/OpenJarvis.git
synced 2026-07-28 14:07:55 +00:00
136 lines
3.1 KiB
Markdown
136 lines
3.1 KiB
Markdown
---
|
|
title: Code Snippets
|
|
description: Copy-paste patterns for common OpenJarvis tasks
|
|
---
|
|
|
|
# Code Snippets
|
|
|
|
Ready-to-use patterns for the most common OpenJarvis tasks. Each snippet is self-contained and copy-pasteable.
|
|
|
|
## Ask a Question (3 lines)
|
|
|
|
```python
|
|
from openjarvis import Jarvis
|
|
|
|
with Jarvis() as j:
|
|
print(j.ask("What is the capital of France?"))
|
|
```
|
|
|
|
## Stream Tokens (4 lines)
|
|
|
|
```python
|
|
import asyncio
|
|
from openjarvis import Jarvis
|
|
|
|
async def main():
|
|
with Jarvis() as j:
|
|
async for token in j.ask_stream("Tell me a story"):
|
|
print(token, end="", flush=True)
|
|
|
|
asyncio.run(main())
|
|
```
|
|
|
|
## Agent with Tools (5 lines)
|
|
|
|
```python
|
|
from openjarvis import Jarvis
|
|
|
|
with Jarvis() as j:
|
|
result = j.ask_full(
|
|
"Search the web for the latest Python release",
|
|
agent="orchestrator",
|
|
tools=["web_search", "think"],
|
|
)
|
|
print(result["content"])
|
|
```
|
|
|
|
## Memory: Index + Search (6 lines)
|
|
|
|
```python
|
|
from openjarvis import Jarvis
|
|
|
|
with Jarvis() as j:
|
|
j.memory.index("./docs/", chunk_size=512)
|
|
results = j.memory.search("deployment options")
|
|
for r in results:
|
|
print(f"[{r['score']:.3f}] {r['content'][:100]}")
|
|
```
|
|
|
|
## Recipe TOML (4 lines)
|
|
|
|
Define an agent pipeline in TOML — no code required:
|
|
|
|
```toml
|
|
[recipe]
|
|
name = "research_assistant"
|
|
agent = "orchestrator"
|
|
tools = ["web_search", "think", "file_read"]
|
|
prompt = "Research the given topic and write a summary."
|
|
```
|
|
|
|
Run with: `jarvis compose run research_assistant "quantum computing advances"`
|
|
|
|
## API Server (1 command)
|
|
|
|
```bash
|
|
jarvis serve --port 8000 --engine ollama --model qwen3:8b
|
|
```
|
|
|
|
Any OpenAI-compatible client works against this endpoint.
|
|
|
|
## Docker Deployment (2 commands)
|
|
|
|
```bash
|
|
docker build -t openjarvis .
|
|
docker run -p 8000:8000 openjarvis serve --host 0.0.0.0
|
|
```
|
|
|
|
## Custom Tool (10 lines)
|
|
|
|
```python
|
|
from openjarvis.core.registry import ToolRegistry
|
|
from openjarvis.core.types import ToolResult
|
|
from openjarvis.tools._stubs import BaseTool, ToolSpec
|
|
|
|
@ToolRegistry.register("my_tool")
|
|
class MyTool(BaseTool):
|
|
tool_id = "my_tool"
|
|
|
|
@property
|
|
def spec(self):
|
|
return ToolSpec(name="my_tool", description="My custom tool",
|
|
parameters={"type": "object", "properties": {"input": {"type": "string"}}})
|
|
|
|
def execute(self, **params):
|
|
return ToolResult(tool_name="my_tool", content=f"Processed: {params.get('input', '')}", success=True)
|
|
```
|
|
|
|
## Multi-Model Routing (5 lines)
|
|
|
|
```python
|
|
from openjarvis import Jarvis
|
|
|
|
j = Jarvis()
|
|
# Router automatically selects the best model per query
|
|
simple = j.ask("What is 2+2?") # routes to fast/cheap model
|
|
complex = j.ask("Analyze this research paper...") # routes to capable model
|
|
j.close()
|
|
```
|
|
|
|
## Human-in-the-Loop Confirmation (6 lines)
|
|
|
|
```python
|
|
from openjarvis import Jarvis
|
|
|
|
with Jarvis() as j:
|
|
result = j.ask_full(
|
|
"Delete old log files in /tmp",
|
|
agent="orchestrator",
|
|
tools=["shell_exec", "file_read"],
|
|
)
|
|
print(f"Agent took {result['turns']} turns")
|
|
print(result["content"])
|
|
```
|
|
|
|
Tools like `shell_exec` can be configured with `requires_confirmation: true` in TOML for interactive approval.
|