Prompt Agent
User Intent
"I want to use AI with tool calling but don't need real-time streaming"
Operation
SDK Method:
graphlit.promptAgent()GraphQL: N/A (composite operation)
Entity Type: Conversation
Common Use Cases: Batch processing, background tasks, tool calling without streaming, server-side AI
TypeScript (Canonical)
import { Graphlit } from 'graphlit-client';
import { ModelServiceTypes, SpecificationTypes } from 'graphlit-client/dist/generated/graphql-types';
const graphlit = new Graphlit();
// Define tools
const tools: ToolDefinitionInput[] = [
{
name: 'searchDocuments',
description: 'Search through ingested documents',
schema: JSON.stringify({
type: 'object',
properties: {
query: { type: 'string', description: 'Search query' }
},
required: ['query']
})
}
];
// Implement tool handlers
const toolHandlers: Record<string, Function> = {
searchDocuments: async (args: { query: string }) => {
const results = await graphlit.queryContents({
search: args.query,
limit: 5
});
return {
count: results.contents.results.length,
results: results.contents.results.map(c => c.name)
};
}
};
// Prompt agent with tools
const result = await graphlit.promptAgent(
'Find information about API rate limiting', // prompt
undefined, // conversationId (optional - creates new)
undefined, // specification (optional - uses default)
tools, // tool definitions
toolHandlers // tool implementations
);
console.log(`AI Response: ${result.message}`);
console.log(`Tools called: ${result.toolCalls?.length || 0}`);
console.log(`Tokens used: ${result.usage?.totalTokens || 0}`);Parameters
promptAgent
prompt(string): User's question or messageconversationId(string): Optional conversation IDIf omitted: Creates new conversation
If provided: Continues existing conversation
specification(EntityReferenceInput): Optional LLM configurationtools(ToolDefinitionInput[]): Tool definitions for function callingtoolHandlers(Record<string, Function>): Tool implementationsKey = tool name
Value = async function that executes tool
Response
Developer Hints
promptAgent vs streamAgent
Streaming
Returns complete response
Token-by-token streaming
Tool calling
Supported
Supported
Latency
Higher (wait for full response)
Lower (first token faster)
Use case
Background, batch, server-side
Chat UI, real-time
Result
Single return value
Event callbacks
Tool Execution is Automatic
Unlike promptConversation which doesn't call tools, promptAgent automatically:
Detects when tools should be called (based on prompt)
Calls your tool handlers
Sends results back to LLM
Returns final response
Checking Tool Calls
âš¡ Performance Metrics
Rounds: Number of LLM calls (1 = no tools, 2+ = tool calling with follow-ups)
Variations
1. Simple Agent without Tools
Use as synchronous alternative to promptConversation:
2. Multi-Tool Agent
Provide multiple tools for complex tasks:
3. Multi-Turn Conversation with Tools
Continue conversation across multiple prompts:
4. Agent with Custom Model
Use specific LLM:
5. Error Handling for Tool Failures
Handle tool execution errors gracefully:
6. Batch Processing with promptAgent
Process multiple queries in parallel:
Common Issues
Issue: Tool not being called even though it seems relevant Solution: Ensure tool description clearly explains when/why to use it. Add more specific use cases in description.
Issue: Tool called but result not used in response Solution: Check tool handler returns data in expected format. Log tool results to debug.
Issue: toolHandlers function not executing
Solution: Verify function name matches tool name exactly (case-sensitive). Ensure function is async.
Issue: Response takes longer than expected Solution: Tools are called synchronously. If tools take time (API calls, DB queries), total time increases. Use streamAgent for better UX.
Issue: Conversation ID changes unexpectedly Solution: If conversationId is undefined, promptAgent creates new conversation. Always pass conversationId for multi-turn.
Issue: Tool parameters not matching schema Solution: LLM may provide parameters differently than expected. Add validation in tool handler:
Production Example
Batch processing with tool calling:
Last updated
Was this helpful?