203 lines
5.7 KiB
Plaintext
203 lines
5.7 KiB
Plaintext
---
|
|
title: "Context7Agent"
|
|
sidebarTitle: "Context7Agent"
|
|
description: "Pre-built AI agent for documentation lookup workflows"
|
|
---
|
|
|
|
The `Context7Agent` class is a pre-configured AI agent that handles the complete documentation lookup workflow automatically. It combines both `resolveLibraryId` and `queryDocs` tools with an optimized system prompt.
|
|
|
|
## Usage
|
|
|
|
```typescript
|
|
import { Context7Agent } from "@upstash/context7-tools-ai-sdk";
|
|
import { anthropic } from "@ai-sdk/anthropic";
|
|
|
|
const agent = new Context7Agent({
|
|
model: anthropic("claude-sonnet-4-20250514"),
|
|
});
|
|
|
|
const { text } = await agent.generate({
|
|
prompt: "How do I use React Server Components?",
|
|
});
|
|
|
|
console.log(text);
|
|
```
|
|
|
|
## Configuration
|
|
|
|
```typescript
|
|
new Context7Agent(config?: Context7AgentConfig)
|
|
```
|
|
|
|
### Parameters
|
|
|
|
<ParamField path="config" type="Context7AgentConfig" optional>
|
|
Configuration options for the agent.
|
|
|
|
<Expandable title="properties">
|
|
<ParamField path="model" type="LanguageModel" optional>
|
|
Language model to use. Must be a LanguageModel instance from an AI SDK provider.
|
|
|
|
Examples:
|
|
- `anthropic('claude-sonnet-4-20250514')`
|
|
- `openai('gpt-5.2')`
|
|
- `google('gemini-1.5-pro')`
|
|
</ParamField>
|
|
<ParamField path="apiKey" type="string" optional>
|
|
Context7 API key. If not provided, uses the `CONTEXT7_API_KEY` environment variable.
|
|
</ParamField>
|
|
<ParamField path="system" type="string" optional>
|
|
Custom system prompt. Overrides the default `AGENT_PROMPT`.
|
|
</ParamField>
|
|
<ParamField path="stopWhen" type="StopCondition" optional default="stepCountIs(5)">
|
|
Condition for when the agent should stop. Defaults to stopping after 5 steps.
|
|
</ParamField>
|
|
|
|
</Expandable>
|
|
</ParamField>
|
|
|
|
### Returns
|
|
|
|
`Context7Agent` extends the AI SDK `Agent` class and provides `generate()` and `stream()` methods.
|
|
|
|
## Agent Workflow
|
|
|
|
The agent follows a structured multi-step workflow:
|
|
|
|
```mermaid
|
|
flowchart TD
|
|
A[User Query] --> B[Extract Library Name]
|
|
B --> C[Call resolveLibraryId]
|
|
C --> D{Results Found?}
|
|
D -->|Yes| E[Select Best Match]
|
|
D -->|No| F[Report No Results]
|
|
E --> G[Call queryDocs]
|
|
G --> H{Sufficient Context?}
|
|
H -->|Yes| I[Generate Response]
|
|
H -->|No| J[Fetch More Docs]
|
|
J --> H
|
|
I --> K[Return Answer with Examples]
|
|
```
|
|
|
|
### Step-by-Step
|
|
|
|
1. **Extract library name** - Identifies the library/framework from the user's query
|
|
2. **Resolve library** - Calls `resolveLibraryId` to find the Context7 library ID
|
|
3. **Select best match** - Analyzes results based on reputation, coverage, and relevance
|
|
4. **Fetch documentation** - Calls `queryDocs` with the selected library ID and user's query
|
|
5. **Query if needed** - Makes additional queries if initial context is insufficient
|
|
6. **Generate response** - Provides an answer with code examples from the documentation
|
|
|
|
## Examples
|
|
|
|
### Basic Usage
|
|
|
|
```typescript
|
|
import { Context7Agent } from "@upstash/context7-tools-ai-sdk";
|
|
import { anthropic } from "@ai-sdk/anthropic";
|
|
|
|
const agent = new Context7Agent({
|
|
model: anthropic("claude-sonnet-4-20250514"),
|
|
});
|
|
|
|
const { text } = await agent.generate({
|
|
prompt: "How do I set up authentication in Next.js?",
|
|
});
|
|
|
|
console.log(text);
|
|
```
|
|
|
|
### With OpenAI
|
|
|
|
```typescript
|
|
import { Context7Agent } from "@upstash/context7-tools-ai-sdk";
|
|
import { openai } from "@ai-sdk/openai";
|
|
|
|
const agent = new Context7Agent({
|
|
model: openai("gpt-5.2"),
|
|
});
|
|
|
|
const { text } = await agent.generate({
|
|
prompt: "Explain Tanstack Query's useQuery hook",
|
|
});
|
|
```
|
|
|
|
### Streaming Responses
|
|
|
|
```typescript
|
|
import { Context7Agent } from "@upstash/context7-tools-ai-sdk";
|
|
import { anthropic } from "@ai-sdk/anthropic";
|
|
|
|
const agent = new Context7Agent({
|
|
model: anthropic("claude-sonnet-4-20250514"),
|
|
});
|
|
|
|
const { textStream } = await agent.stream({
|
|
prompt: "How do I create a Supabase Edge Function?",
|
|
});
|
|
|
|
for await (const chunk of textStream) {
|
|
process.stdout.write(chunk);
|
|
}
|
|
```
|
|
|
|
### Custom Configuration
|
|
|
|
```typescript
|
|
import { Context7Agent } from "@upstash/context7-tools-ai-sdk";
|
|
import { anthropic } from "@ai-sdk/anthropic";
|
|
import { stepCountIs } from "ai";
|
|
|
|
const agent = new Context7Agent({
|
|
model: anthropic("claude-sonnet-4-20250514"),
|
|
apiKey: process.env.CONTEXT7_API_KEY,
|
|
stopWhen: stepCountIs(8), // Allow more steps for complex queries
|
|
});
|
|
```
|
|
|
|
### Custom System Prompt
|
|
|
|
```typescript
|
|
import { Context7Agent, AGENT_PROMPT } from "@upstash/context7-tools-ai-sdk";
|
|
import { openai } from "@ai-sdk/openai";
|
|
|
|
const agent = new Context7Agent({
|
|
model: openai("gpt-5.2"),
|
|
system: `${AGENT_PROMPT}
|
|
|
|
Additional instructions:
|
|
- Always include TypeScript examples
|
|
- Mention version compatibility when relevant
|
|
- Suggest related documentation topics`,
|
|
});
|
|
```
|
|
|
|
## Comparison: Agent vs Tools
|
|
|
|
| Feature | Context7Agent | Individual Tools |
|
|
| ------------- | -------------------- | -------------------- |
|
|
| Setup | Single configuration | Configure each tool |
|
|
| Workflow | Automatic multi-step | Manual orchestration |
|
|
| System prompt | Optimized default | You provide |
|
|
| Customization | Limited | Full control |
|
|
| Best for | Quick integration | Custom workflows |
|
|
|
|
### When to Use the Agent
|
|
|
|
- Rapid prototyping
|
|
- Standard documentation lookup use cases
|
|
- When you want sensible defaults
|
|
|
|
### When to Use Individual Tools
|
|
|
|
- Custom agentic workflows
|
|
- Integration with other tools
|
|
- Fine-grained control over the process
|
|
- Custom system prompts with specific behavior
|
|
|
|
## Related
|
|
|
|
- [resolveLibraryId](/agentic-tools/ai-sdk/tools/resolve-library-id) - The library search tool used by the agent
|
|
- [queryDocs](/agentic-tools/ai-sdk/tools/query-docs) - The documentation fetch tool used by the agent
|
|
- [Getting Started](/agentic-tools/ai-sdk/getting-started) - Overview of the AI SDK integration
|