docs/build-pieces/misc/create-new-ai-provider.mdx
ActivePieces currently supports the following AI providers:
To create a new AI provider, you need to follow these steps:
Create a new factory that returns an instance of the AI interface in the packages/pieces/common/src/lib/ai/providers/your-ai-provider.ts file.
export const yourAiProvider = ({
serverUrl,
engineToken,
}: { serverUrl: string, engineToken: string }): AI<YourAiProviderSDK> => {
const impl = new YourAiProviderSDK(serverUrl, engineToken);
return {
provider: "YOUR_AI_PROVIDER" as const,
chat: {
text: async (params) => {
try {
const response = await impl.chat.text(params);
return response;
} catch (e: any) {
if (e?.error?.error) {
throw e.error.error;
}
throw e;
}
}
},
};
};
Add the new AI provider to the AiProviders enum in packages/pieces/common/src/lib/ai/providers/index.ts file.
export const AiProviders = [
+ {
+ logoUrl: 'https://cdn.activepieces.com/pieces/openai.png',
+ defaultBaseUrl: 'https://api.your-ai-provider.com',
+ label: 'Your AI Provider' as const,
+ value: 'your-ai-provider' as const,
+ models: [
+ { label: 'model-1', value: 'model-1' },
+ { label: 'model-2', value: 'model-2' },
+ { label: 'model-3', value: 'model-3' },
+ ],
+ factory: yourAiProvider,
+ },
...
]
Now we need to tell ActivePieces how to authenticate to your AI provider. You can do this by adding an auth property to the AiProvider object.
The auth property is an object that defines the authentication mechanism for your AI provider. It consists of two properties: name and mapper. The name property specifies the name of the header that will be used to authenticate with your AI provider, and the mapper property defines a function that maps the value of the header to the format that your AI provider expects.
Here's an example of how to define the authentication header for a bearer token:
export const AiProviders = [
{
logoUrl: 'https://cdn.activepieces.com/pieces/openai.png',
defaultBaseUrl: 'https://api.your-ai-provider.com',
label: 'Your AI Provider' as const,
value: 'your-ai-provider' as const,
models: [
{ label: 'model-1', value: 'model-1' },
{ label: 'model-2', value: 'model-2' },
{ label: 'model-3', value: 'model-3' },
],
+ auth: authHeader({ bearer: true }), // or authHeader({ name: 'x-api-key', bearer: false })
factory: yourAiProvider,
},
...
]
To test the AI provider, you can use a universal AI piece in a flow. Follow these steps: