AI / LLM Integration
NAIDE provides first-class AI integration. The ai module is auto-imported when used — no setup required.
Text Generation
str answer = await ai.ask("What is the capital of France?")
log answer
Structured JSON
Get structured data from natural language with ai.json:
map user = await ai.json("Extract the user info from: John, 25, Tokyo", {
name: "str",
age: "int",
city: "str"
})
log user.name # "John"
Multi-turn Chat
list messages = [{role: "user", content: "Hello"}]
str reply = await ai.chat(messages)
log reply
Streaming
Stream responses token by token:
for await chunk of ai.stream("Write a poem about code"):
log chunk
Embeddings
Generate vector embeddings for text:
list vec = await ai.embed("NAIDE is amazing")
log vec.length # 1536 (dimensions)
Similarity
Compute cosine similarity between two vectors:
list a = await ai.embed("dog")
list b = await ai.embed("puppy")
num score = ai.similarity(a, b)
log score # ~0.92
Prompt Templates
Define reusable, parameterized prompts:
prompt summarize {lang: "en"}:
"Summarize the following text in {lang}:"
"{text}"
str result = await ai.ask(summarize({text: "Long article here..."}))
RAG Pattern
Combine embeddings and vector store for retrieval-augmented generation:
use {createVectorStore} from "naider/runtime"
# Build knowledge base
any store = createVectorStore()
list docs = ["NAIDE compiles to JS", "NAIDE has built-in AI", "NAIDE supports Flask"]
each doc in docs:
list vec = await ai.embed(doc)
store.add(uuid(), vec, {text: doc})
# Query
list query = await ai.embed("How does NAIDE handle AI?")
list results = store.search(query, 3)
str context = results.map(r => r.meta.text).join("\n")
str answer = await ai.ask("Based on: {context}\n\nAnswer: How does NAIDE handle AI?")
AI in Server Routes
server app port 3000:
post "/api/ask" (req, res):
str answer = await ai.ask(req.body.prompt)
ret {answer}
post "/api/summarize" (req, res):
str summary = await ai.ask(summarize({text: req.body.text}))
ret {summary}
Configuration
Set AI provider via environment variables:
# OpenAI (default)
OPENAI_API_KEY=sk-...
# Anthropic
ANTHROPIC_API_KEY=sk-ant-...