Guides
Integration Examples
Real-world examples of integrating AMP into different frameworks.
Next.js App Router
app/api/agent/route.ts
import { AMP } from '@amp-protocol/client';
import OpenAI from 'openai';
const amp = new AMP({ apiKey: process.env.AMP_API_KEY });
const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
export async function POST(request: Request) {
const { userId, query } = await request.json();
// Get motivation context
const context = await amp.getContext({
userId,
task: query
});
// Adapt system prompt
const systemPrompt = `You are a helpful assistant.
Communication: ${context.communicationStyle}
Framing: ${context.suggestedFraming}
Detail level: ${context.complexity}`;
// Generate response
const completion = await openai.chat.completions.create({
model: 'gpt-4',
messages: [
{ role: 'system', content: systemPrompt },
{ role: 'user', content: query }
]
});
// Report outcome (fire and forget)
amp.reportOutcome({
requestId: context.requestId,
started: true,
completed: true
}).catch(console.error);
return Response.json({
response: completion.choices[0].message.content
});
}Express.js
server.ts
import express from 'express';
import { AMP } from '@amp-protocol/client';
const app = express();
const amp = new AMP({ apiKey: process.env.AMP_API_KEY });
app.post('/api/agent', async (req, res) => {
const { userId, query } = req.body;
const context = await amp.getContext({ userId, task: query });
// Use context to adapt response
const response = await generateResponse(query, context);
res.json({ response });
// Report outcome in background
trackUserBehaviour(userId, context.requestId);
});Python FastAPI
main.py
from fastapi import FastAPI
from amp_protocol import AMP
import os
app = FastAPI()
amp = AMP(api_key=os.getenv("AMP_API_KEY"))
@app.post("/api/agent")
async def handle_query(request: dict):
user_id = request["userId"]
query = request["query"]
# Get context
context = await amp.get_context(
user_id=user_id,
task=query
)
# Adapt response based on context
response = await generate_response(query, context)
# Report outcome
await amp.report_outcome(
request_id=context.request_id,
started=True,
completed=True
)
return {"response": response}LangChain Integration
from langchain.agents import Agent
from amp_protocol import AMP
amp = AMP(api_key=os.getenv("AMP_API_KEY"))
class AMPAgent(Agent):
def run(self, user_id: str, task: str):
# Get AMP context
context = amp.get_context(user_id=user_id, task=task)
# Adapt agent behaviour
if context.complexity == "break_into_steps":
return self.run_step_by_step(task)
else:
return self.run_direct(task)