# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# NOTE! THIS FILE IS AUTOMATICALLY GENERATED AND WILL BE OVERWRITTEN!
#
# IF YOU WANT TO MODIFY THIS FILE, YOU SHOULD MODIFY THE TEMPLATE
# `get_provider_info_TEMPLATE.py.jinja2` IN the `dev/breeze/src/airflow_breeze/templates` DIRECTORY
[docs]
def get_provider_info():
return {
"package-name": "apache-airflow-providers-common-ai",
"name": "Common AI",
"description": "AI/LLM hooks and operators for Airflow pipelines using `pydantic-ai <https://ai.pydantic.dev/>`__.\n",
"integrations": [
{
"integration-name": "Common AI",
"external-doc-url": "https://airflow.apache.org/docs/apache-airflow-providers-common-ai/",
"how-to-guide": [
"/docs/apache-airflow-providers-common-ai/operators/agent.rst",
"/docs/apache-airflow-providers-common-ai/operators/llm.rst",
"/docs/apache-airflow-providers-common-ai/operators/llm_branch.rst",
"/docs/apache-airflow-providers-common-ai/operators/llm_sql.rst",
"/docs/apache-airflow-providers-common-ai/operators/llm_schema_compare.rst",
],
"tags": ["ai"],
},
{
"integration-name": "Pydantic AI",
"external-doc-url": "https://ai.pydantic.dev/",
"tags": ["ai"],
},
{
"integration-name": "MCP Server",
"external-doc-url": "https://modelcontextprotocol.io/",
"tags": ["ai"],
},
],
"hooks": [
{
"integration-name": "Pydantic AI",
"python-modules": ["airflow.providers.common.ai.hooks.pydantic_ai"],
},
{"integration-name": "MCP Server", "python-modules": ["airflow.providers.common.ai.hooks.mcp"]},
],
"connection-types": [
{
"hook-class-name": "airflow.providers.common.ai.hooks.pydantic_ai.PydanticAIHook",
"connection-type": "pydanticai",
"ui-field-behaviour": {
"hidden-fields": ["schema", "port", "login"],
"relabeling": {"password": "API Key"},
"placeholders": {"host": "https://api.openai.com/v1 (optional, for custom endpoints)"},
},
"conn-fields": {
"model": {
"label": "Model",
"description": "Model in provider:name format (e.g. anthropic:claude-sonnet-4-20250514, openai:gpt-5)",
"schema": {"type": ["string", "null"]},
}
},
},
{
"hook-class-name": "airflow.providers.common.ai.hooks.mcp.MCPHook",
"connection-type": "mcp",
"ui-field-behaviour": {
"hidden-fields": ["schema", "port", "login"],
"relabeling": {"password": "Auth Token"},
"placeholders": {"host": "http://localhost:3001/mcp (for HTTP/SSE transport)"},
},
"conn-fields": {
"transport": {
"label": "Transport",
"description": "Transport type: http (default), sse, or stdio",
"schema": {"type": ["string", "null"]},
},
"command": {
"label": "Command",
"description": "Command to run for stdio transport (e.g. uvx, python)",
"schema": {"type": ["string", "null"]},
},
"args": {
"label": "Arguments",
"description": 'JSON array of arguments for stdio command (e.g. ["mcp-run-python"])',
"schema": {"type": ["string", "null"]},
},
},
},
],
"operators": [
{
"integration-name": "Common AI",
"python-modules": [
"airflow.providers.common.ai.operators.agent",
"airflow.providers.common.ai.operators.llm",
"airflow.providers.common.ai.operators.llm_branch",
"airflow.providers.common.ai.operators.llm_sql",
"airflow.providers.common.ai.operators.llm_schema_compare",
],
}
],
"task-decorators": [
{"class-name": "airflow.providers.common.ai.decorators.agent.agent_task", "name": "agent"},
{"class-name": "airflow.providers.common.ai.decorators.llm.llm_task", "name": "llm"},
{
"class-name": "airflow.providers.common.ai.decorators.llm_branch.llm_branch_task",
"name": "llm_branch",
},
{"class-name": "airflow.providers.common.ai.decorators.llm_sql.llm_sql_task", "name": "llm_sql"},
{
"class-name": "airflow.providers.common.ai.decorators.llm_schema_compare.llm_schema_compare_task",
"name": "llm_schema_compare",
},
],
}