🎤 Micdrop

AI SDK

AI SDK implementation for @micdrop/server.

This package provides an AI agent implementation using the Vercel AI SDK, allowing you to use any compatible language model provider.

Installation

Install AI SDK:

Terminal window
npm install @micdrop/ai-sdk

And install the provider you want to use, for example OpenAI:

Terminal window
npm install @ai-sdk/openai

AI SDK Agent

Usage with MicdropServer

import { AiSdkAgent } from '@micdrop/ai-sdk'
import { MicdropServer } from '@micdrop/server'
import { openai } from '@ai-sdk/openai' // or any other provider
const agent = new AiSdkAgent({
model: openai('gpt-4o'), // Use any AI SDK compatible model
systemPrompt: 'You are a helpful assistant',
// Custom AI SDK settings (optional)
settings: {
temperature: 0.7,
maxOutputTokens: 150,
},
// Provider specific parameters (optional)
providerOptions: {
openai: { reasoningEffort: 'none' },
},
})
// Use with MicdropServer
new MicdropServer(socket, {
agent,
// ... other options
})

Usage without MicdropServer

import { AiSdkAgent } from '@micdrop/ai-sdk'
import { openai } from '@ai-sdk/openai'
const agent = new AiSdkAgent({
model: openai('gpt-4o'),
systemPrompt: 'You are a helpful assistant',
})
agent.on('Message', (message) => console.log('Message:', message))
agent.addUserMessage('Hello, what can you do?')
// The answer is a text stream, written as the model generates it
agent.answer().on('data', (chunk) => process.stdout.write(chunk))

Events

EventPayloadDescription
MessageMicdropConversationItemA message, a tool call or a tool result was added to the conversation.
ToolCallMicdropToolCallA tool declared with emitOutput ran, with its parameters and output.
CancelLastUserMessagenoneThe last user message was dropped because it carried no intent.
SkipAnswernoneThe agent stays silent and waits for the user to finish their sentence.
EndCallnoneThe agent decided that the call is over.
FailednoneThe agent gave up generating an answer after its retries.

See the Agent interface for the full contract.

Supported Providers

The AI SDK Agent supports any provider compatible with the Vercel AI SDK:

  • OpenAI: openai('gpt-4o'), openai('gpt-3.5-turbo')
  • Anthropic: anthropic('claude-3-5-sonnet-20241022')
  • Google: google('gemini-1.5-pro'), google('gemini-1.5-flash')
  • Mistral: mistral('mistral-large-latest')
  • And many more: See AI SDK Providers

Provider specific options

settings carries the parameters every provider understands, such as the temperature. Parameters read by a single provider go in providerOptions, under the name of that provider. Turning reasoning off is the common case in a call, since reasoning delays the first token:

const agent = new AiSdkAgent({
model: openai.chat('gpt-5.2'),
systemPrompt: 'You are a helpful assistant',
providerOptions: {
openai: { reasoningEffort: 'none' },
},
})

The same option reaches a local server behind createOpenAI. Ollama maps it to its own think flag, and a model without a reasoning mode ignores it.

Options

OptionTypeDefaultDescription
modelLanguageModelRequiredAny AI SDK compatible language model
systemPromptstringRequiredSystem prompt for the agent
maxRetrynumber3Maximum number of retries on API failures
autoEndCallboolean | stringfalseAuto-detect when user wants to end call
autoSemanticTurnboolean | stringfalseHandle incomplete user sentences
autoIgnoreUserNoiseboolean | stringfalseFilter meaningless user sounds
extractExtractJsonOptions | ExtractTagOptionsundefinedExtract structured data from responses
onBeforeAnswerfunctionundefinedHook called before answer generation - return true to skip generation
settingsCallSettings{}Additional AI SDK parameters
providerOptionsProviderOptions{}Provider specific parameters, keyed by provider name

The AI SDK Agent supports adding and removing custom tools to extend its capabilities. For detailed information about tool management, see the Tools documentation.

Advanced Features

The AI SDK Agent supports advanced features for improved conversation handling: