fastapi-fullstack 0.2.18__py3-none-any.whl → 0.2.20__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {fastapi_fullstack-0.2.18.dist-info → fastapi_fullstack-0.2.20.dist-info}/METADATA +57 -49
- {fastapi_fullstack-0.2.18.dist-info → fastapi_fullstack-0.2.20.dist-info}/RECORD +105 -79
- {fastapi_fullstack-0.2.18.dist-info → fastapi_fullstack-0.2.20.dist-info}/WHEEL +1 -1
- fastapi_gen/UPGRADES.yaml +29 -0
- fastapi_gen/cli.py +15 -2
- fastapi_gen/config.py +28 -3
- fastapi_gen/prompts.py +43 -3
- fastapi_gen/template/VARIABLES.md +15 -13
- fastapi_gen/template/cookiecutter.json +2 -0
- fastapi_gen/template/hooks/post_gen_project.py +50 -1
- fastapi_gen/template/{{cookiecutter.project_slug}}/.github/workflows/ci.yml +13 -13
- fastapi_gen/template/{{cookiecutter.project_slug}}/.gitlab-ci.yml +1 -1
- fastapi_gen/template/{{cookiecutter.project_slug}}/ENV_VARS.md +5 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/MANUAL_STEPS.md +9 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/.env.example +16 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic/env.py +9 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0027_user_magic_link_epoch.py +55 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/admin.py +24 -2
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/assistant.py +34 -4
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/mcp.py +7 -4
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/mcp_oauth.py +12 -12
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/memory.py +139 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/openai_compatible.py +41 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/pydantic_deep_assistant.py +90 -70
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/code_execution.py +1 -1
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/deps.py +68 -5
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/__init__.py +8 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/agent.py +18 -26
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/auth.py +81 -11
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/conversations.py +7 -1
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/health.py +2 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/knowledge_bases.py +3 -4
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/me_memory.py +114 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/org_integrations.py +2 -3
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/core/config.py +24 -2
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/core/crypto.py +11 -2
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/core/security.py +36 -4
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/memory_pool.py +180 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/migration_filters.py +29 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/user.py +19 -2
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/todo_pool.py +7 -3
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/main.py +15 -11
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/schemas/user_memory.py +49 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/schemas/webhook.py +5 -1
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/agent.py +15 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/agent_invocation.py +48 -7
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/agent_session.py +237 -83
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/channels/router.py +3 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/channels/slack.py +2 -1
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/conversation.py +27 -2
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/rag/embeddings.py +6 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/rate_limit/__init__.py +18 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/rate_limit/service.py +87 -26
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/rate_limit/storage.py +25 -10
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/sync_source.py +22 -2
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/user.py +60 -6
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/user_memory.py +202 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/pyproject.toml +38 -18
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/api/test_auth.py +52 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/api/test_exceptions.py +1 -1
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/api/test_me_memory.py +217 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/api/test_openapi.py +17 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/conftest.py +18 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_agents.py +21 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_channel_history.py +38 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_conversation_write_access.py +121 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_core.py +48 -5
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_mcp_connections.py +18 -18
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_memory.py +297 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_memory_channels.py +65 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_memory_postgres.py +127 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_openai_compatible.py +60 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_pydantic_deep_history.py +167 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_security.py +47 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_services.py +94 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_services_conversation.py +59 -1
- fastapi_gen/template/{{cookiecutter.project_slug}}/docker-compose.dev.yml +5 -5
- fastapi_gen/template/{{cookiecutter.project_slug}}/docker-compose.prod.yml +12 -9
- fastapi_gen/template/{{cookiecutter.project_slug}}/docker-compose.yml +5 -5
- fastapi_gen/template/{{cookiecutter.project_slug}}/docs/configuration.md +8 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/layout.tsx +4 -1
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/memory/page.tsx +22 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/me/memory/file/route.ts +79 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/me/memory/route.ts +28 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-call-card.tsx +27 -10
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-results/memory.tsx +222 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-results/skills.tsx +7 -15
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/demo/demo-replay.tsx +51 -11
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/settings/memory-delete-dialog.tsx +53 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/settings/memory-file-editor.tsx +121 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/settings/memory-file-name.ts +30 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/settings/memory-manager.tsx +247 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/index.ts +3 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-memory.ts +100 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-step-replay.ts +1 -1
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/agent-step-captions.ts +14 -3
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/constants.ts +3 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/memory-api.ts +53 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/py-literal.ts +112 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/query-keys.ts +5 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/skill-result.test.ts +38 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/skill-result.ts +30 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/kubernetes/secret.yaml +3 -0
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/versioning.py +0 -173
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/core/csrf.py +0 -140
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/core/rate_limit.py +0 -53
- {fastapi_fullstack-0.2.18.dist-info → fastapi_fullstack-0.2.20.dist-info}/entry_points.txt +0 -0
- {fastapi_fullstack-0.2.18.dist-info → fastapi_fullstack-0.2.20.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: fastapi-fullstack
|
|
3
|
-
Version: 0.2.
|
|
4
|
-
Summary: Full-stack FastAPI + Next.js template generator with
|
|
3
|
+
Version: 0.2.20
|
|
4
|
+
Summary: Full-stack FastAPI + Next.js template generator with Pydantic AI/LangChain agents, WebSocket streaming, 20+ enterprise integrations, and Logfire/LangSmith observability. Ship AI apps fast.
|
|
5
5
|
Project-URL: Homepage, https://github.com/vstorm-co/full-stack-ai-agent-template
|
|
6
|
-
Project-URL: Documentation, https://
|
|
6
|
+
Project-URL: Documentation, https://vstorm-co.github.io/full-stack-ai-agent-template/
|
|
7
7
|
Project-URL: Repository, https://github.com/vstorm-co/full-stack-ai-agent-template
|
|
8
8
|
Author-email: Vstorm <hr@vstorm.co>
|
|
9
9
|
License: MIT
|
|
@@ -19,27 +19,26 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
19
19
|
Classifier: Programming Language :: Python :: 3.12
|
|
20
20
|
Classifier: Topic :: Software Development :: Code Generators
|
|
21
21
|
Requires-Python: >=3.11
|
|
22
|
-
Requires-Dist: arq>=0.28.0
|
|
23
|
-
Requires-Dist: celery>=5.6.3
|
|
24
22
|
Requires-Dist: click>=8.3.3
|
|
25
23
|
Requires-Dist: cookiecutter>=2.7.0
|
|
26
24
|
Requires-Dist: email-validator>=2.3.0
|
|
27
|
-
Requires-Dist: httpx>=0.28.1
|
|
28
25
|
Requires-Dist: packaging>=24.0
|
|
29
|
-
Requires-Dist: pydantic-settings>=2.14.2
|
|
30
26
|
Requires-Dist: pydantic>=2.13.0
|
|
31
|
-
Requires-Dist: pytest-asyncio>=1.3.0
|
|
32
|
-
Requires-Dist: pytest>=9.0.3
|
|
33
27
|
Requires-Dist: pyyaml>=6.0
|
|
34
28
|
Requires-Dist: questionary>=2.1.0
|
|
35
29
|
Requires-Dist: rich>=15.0.0
|
|
36
30
|
Requires-Dist: ruff>=0.14.0
|
|
37
|
-
Requires-Dist: stripe>=15.1.0
|
|
38
|
-
Requires-Dist: taskiq>=0.12.4
|
|
39
31
|
Provides-Extra: dev
|
|
32
|
+
Requires-Dist: arq>=0.28.0; extra == 'dev'
|
|
33
|
+
Requires-Dist: celery>=5.6.3; extra == 'dev'
|
|
34
|
+
Requires-Dist: httpx>=0.28.1; extra == 'dev'
|
|
40
35
|
Requires-Dist: pre-commit>=4.0.0; extra == 'dev'
|
|
36
|
+
Requires-Dist: pydantic-settings>=2.14.2; extra == 'dev'
|
|
37
|
+
Requires-Dist: pytest-asyncio>=1.3.0; extra == 'dev'
|
|
41
38
|
Requires-Dist: pytest-cov>=7.0.0; extra == 'dev'
|
|
42
39
|
Requires-Dist: pytest>=9.0.0; extra == 'dev'
|
|
40
|
+
Requires-Dist: stripe>=15.1.0; extra == 'dev'
|
|
41
|
+
Requires-Dist: taskiq>=0.12.4; extra == 'dev'
|
|
43
42
|
Requires-Dist: ty>=0.0.31; extra == 'dev'
|
|
44
43
|
Provides-Extra: docs
|
|
45
44
|
Requires-Dist: mkdocs-material>=9.7.0; extra == 'docs'
|
|
@@ -47,6 +46,13 @@ Requires-Dist: mkdocs>=1.6.1; extra == 'docs'
|
|
|
47
46
|
Requires-Dist: pymdown-extensions>=10.20; extra == 'docs'
|
|
48
47
|
Description-Content-Type: text/markdown
|
|
49
48
|
|
|
49
|
+
<p align="center">
|
|
50
|
+
<a href="https://github.com/vstorm-co/agenticos">
|
|
51
|
+
<img src="assets/agenticos-banner-light.png" width="100%" alt="AgenticOS by Vstorm, the Sovereign Agentic AI Layer: AI agents your whole team can use and improve. Open source (Apache-2.0), self-hosted, built on Pydantic AI, with budgets, approvals, guardrails and activity built in. Links to the AgenticOS repository on GitHub.">
|
|
52
|
+
</a>
|
|
53
|
+
</p>
|
|
54
|
+
<p align="center"><sub>From the team behind this repo: <a href="https://github.com/vstorm-co/agenticos"><b>AgenticOS</b></a>, the Sovereign Agentic AI Layer. AI agents your whole team can use and improve: open source (Apache-2.0), self-hosted, built on Pydantic AI.</sub></p>
|
|
55
|
+
|
|
50
56
|
<h1 align="center">Full-Stack AI Agent Template</h1>
|
|
51
57
|
|
|
52
58
|
<p align="center">
|
|
@@ -58,7 +64,6 @@ Description-Content-Type: text/markdown
|
|
|
58
64
|
<a href="#-features">Features</a> •
|
|
59
65
|
<a href="#-demo">Demo</a> •
|
|
60
66
|
<a href="https://vstorm-co.github.io/full-stack-ai-agent-template/">Documentation</a> •
|
|
61
|
-
<a href="https://oss.vstorm.co/projects/full-stack-ai-agent-template/configurator/">Configurator</a> •
|
|
62
67
|
<a href="https://pypi.org/project/fastapi-fullstack/">PyPI</a>
|
|
63
68
|
</p>
|
|
64
69
|
|
|
@@ -81,7 +86,7 @@ Description-Content-Type: text/markdown
|
|
|
81
86
|
</p>
|
|
82
87
|
|
|
83
88
|
<p align="center">
|
|
84
|
-
<b>🤖 5 AI Agent Frameworks</b> <i>(
|
|
89
|
+
<b>🤖 5 AI Agent Frameworks</b> <i>(Pydantic AI, Pydantic Deep Agents, LangChain, LangGraph, DeepAgents)</i>
|
|
85
90
|
<br>
|
|
86
91
|
<b>📄 RAG Pipeline</b> <i>(Milvus, Qdrant, pgvector, ChromaDB)</i>
|
|
87
92
|
<br>
|
|
@@ -122,22 +127,23 @@ This template is part of a broader open-source ecosystem for production AI agent
|
|
|
122
127
|
|
|
123
128
|
| Project | Description | |
|
|
124
129
|
|---------|-------------|---|
|
|
130
|
+
| **[AgenticOS](https://github.com/vstorm-co/agenticos)** | Open-source (Apache-2.0), self-hosted platform to build, share and govern AI agents across a company. | [](https://github.com/vstorm-co/agenticos) |
|
|
125
131
|
| **[pydantic-deepagents](https://github.com/vstorm-co/pydantic-deepagents)** | The modular agent runtime for Python. Claude Code-style CLI with Docker sandbox, browser automation, multi-agent teams, and /improve. | [](https://github.com/vstorm-co/pydantic-deepagents) |
|
|
126
132
|
| **[pydantic-ai-shields](https://github.com/vstorm-co/pydantic-ai-shields)** | Drop-in guardrails for Pydantic AI agents. 5 infra + 5 content shields. | [](https://github.com/vstorm-co/pydantic-ai-shields) |
|
|
127
|
-
| **[pydantic-ai
|
|
128
|
-
| **[summarization-pydantic-ai](https://github.com/vstorm-co/pydantic-ai
|
|
133
|
+
| **[subagents-pydantic-ai](https://github.com/vstorm-co/subagents-pydantic-ai)** | Declarative multi-agent orchestration with token tracking. | [](https://github.com/vstorm-co/subagents-pydantic-ai) |
|
|
134
|
+
| **[summarization-pydantic-ai](https://github.com/vstorm-co/summarization-pydantic-ai)** | Smart context compression for long-running agents. | [](https://github.com/vstorm-co/summarization-pydantic-ai) |
|
|
129
135
|
| **[pydantic-ai-backend](https://github.com/vstorm-co/pydantic-ai-backend)** | Sandboxed execution for AI agents. Docker + Daytona. | [](https://github.com/vstorm-co/pydantic-ai-backend) |
|
|
130
136
|
|
|
131
|
-
> **Want the runtime behind this template's AI agents?** [pydantic-deepagents](https://github.com/vstorm-co/pydantic-deepagents) powers the `
|
|
137
|
+
> **Want the runtime behind this template's AI agents?** [pydantic-deepagents](https://github.com/vstorm-co/pydantic-deepagents) powers the `pydantic_deep` framework option — install it standalone with `curl -fsSL .../install.sh | bash`.
|
|
132
138
|
|
|
133
|
-
Browse all projects at [
|
|
139
|
+
Browse all projects at [github.com/vstorm-co](https://github.com/vstorm-co)
|
|
134
140
|
|
|
135
141
|
---
|
|
136
142
|
|
|
137
143
|
## 🚀 Quick Start
|
|
138
144
|
|
|
139
145
|
> [!TIP]
|
|
140
|
-
> **
|
|
146
|
+
> **Want to review every option first?** The [installation guide](https://vstorm-co.github.io/full-stack-ai-agent-template/installation/) covers the interactive wizard, non-interactive flags and presets; `fastapi-fullstack templates` lists every option.
|
|
141
147
|
|
|
142
148
|
### Installation
|
|
143
149
|
|
|
@@ -654,7 +660,7 @@ The chat UI streams responses over WebSocket and renders each tool call as a pur
|
|
|
654
660
|
<tr>
|
|
655
661
|
<td width="50%">
|
|
656
662
|
|
|
657
|
-
**Logfire** — distributed tracing: FastAPI,
|
|
663
|
+
**Logfire** — distributed tracing: FastAPI, Pydantic AI, DB, Redis, Celery, HTTPX in one timeline.
|
|
658
664
|
|
|
659
665
|

|
|
660
666
|
|
|
@@ -701,7 +707,7 @@ This template gives you all of that out of the box, with **20+ configurable inte
|
|
|
701
707
|
|
|
702
708
|
### Perfect For
|
|
703
709
|
|
|
704
|
-
- 🤖 **AI Chatbots & Assistants** -
|
|
710
|
+
- 🤖 **AI Chatbots & Assistants** - Pydantic AI or LangChain agents with streaming responses
|
|
705
711
|
- 📊 **ML Applications** - Background task processing with Celery/Taskiq
|
|
706
712
|
- 🏢 **Enterprise SaaS** - Full auth, admin panel, webhooks, and more
|
|
707
713
|
- 🚀 **Startups** - Ship fast with production-ready infrastructure
|
|
@@ -721,7 +727,7 @@ They also ship a ready-to-use **`.claude/` toolkit** that adapts to the options
|
|
|
721
727
|
## ✨ Features
|
|
722
728
|
|
|
723
729
|
<p align="center">
|
|
724
|
-
<a href="https://ai.pydantic.dev"><img src="https://img.shields.io/badge/
|
|
730
|
+
<a href="https://ai.pydantic.dev"><img src="https://img.shields.io/badge/Pydantic%20AI-E92063?logo=pydantic&logoColor=white" alt="Pydantic AI"></a>
|
|
725
731
|
<a href="https://python.langchain.com"><img src="https://img.shields.io/badge/LangChain-1C3C3C?logo=langchain&logoColor=white" alt="LangChain"></a>
|
|
726
732
|
<a href="https://langchain-ai.github.io/langgraph/"><img src="https://img.shields.io/badge/LangGraph-005A9C?logo=langchain&logoColor=white" alt="LangGraph"></a>
|
|
727
733
|
<a href="https://milvus.io"><img src="https://img.shields.io/badge/Milvus-FF6B35?logoColor=white" alt="Milvus"></a>
|
|
@@ -762,8 +768,8 @@ They also ship a ready-to-use **`.claude/` toolkit** that adapts to the options
|
|
|
762
768
|
|
|
763
769
|
### 🤖 AI/LLM First
|
|
764
770
|
|
|
765
|
-
- **5 AI Frameworks** - [
|
|
766
|
-
- **
|
|
771
|
+
- **5 AI Frameworks** - [Pydantic AI](https://ai.pydantic.dev), [Pydantic Deep Agents](https://github.com/vstorm-co/pydantic-deepagents), [LangChain](https://python.langchain.com), [LangGraph](https://langchain-ai.github.io/langgraph/), [DeepAgents](https://github.com/langchain-ai/deepagents)
|
|
772
|
+
- **5 LLM Providers** - OpenAI, Anthropic, Google Gemini, OpenRouter, and any OpenAI-compatible gateway or server
|
|
767
773
|
- **RAG** - Document ingestion, vector search, reranking (Milvus, Qdrant, ChromaDB, pgvector)
|
|
768
774
|
- **WebSocket Streaming** - Real-time responses with full event access
|
|
769
775
|
- **Rich Chat UI** - Specialized tool-call cards (web search, knowledge base, Python, charts, skills), live subagent feed, citation sources panel, plan/task checklist, reasoning view, and in-chat file previews
|
|
@@ -776,7 +782,7 @@ They also ship a ready-to-use **`.claude/` toolkit** that adapts to the options
|
|
|
776
782
|
- **Multimodal Embeddings** - Provider-aware: OpenAI, Voyage (Anthropic), Gemini (multimodal text + images)
|
|
777
783
|
- **Document Sources** - Local files, API upload, Google Drive, S3/MinIO
|
|
778
784
|
- **Sync Sources** - Per-organization connector management UI (Google Drive, S3/MinIO) with scheduled sync, manual triggers, encrypted credentials, and per-run logs
|
|
779
|
-
- **Observability** - Logfire for
|
|
785
|
+
- **Observability** - Logfire for Pydantic AI, LangSmith for LangChain/LangGraph/DeepAgents
|
|
780
786
|
|
|
781
787
|
### ⚡ Backend (FastAPI)
|
|
782
788
|
|
|
@@ -802,15 +808,15 @@ They also ship a ready-to-use **`.claude/` toolkit** that adapts to the options
|
|
|
802
808
|
|
|
803
809
|
| Category | Integrations |
|
|
804
810
|
|----------|-------------|
|
|
805
|
-
| **AI Frameworks** |
|
|
806
|
-
| **LLM Providers** | OpenAI, Anthropic, Google Gemini, OpenRouter |
|
|
811
|
+
| **AI Frameworks** | Pydantic AI, Pydantic Deep Agents, LangChain, LangGraph, DeepAgents |
|
|
812
|
+
| **LLM Providers** | OpenAI, Anthropic, Google Gemini, OpenRouter, OpenAI-compatible endpoints |
|
|
807
813
|
| **RAG / Vector Stores** | Milvus, Qdrant, ChromaDB, pgvector |
|
|
808
814
|
| **RAG Sources** | Local files, API upload, Google Drive, S3/MinIO, Sync Sources (per-org UI, scheduled) |
|
|
809
815
|
| **Embeddings** | OpenAI, Voyage, Gemini (multimodal), SentenceTransformers |
|
|
810
816
|
| **Background Tasks** | Celery, Taskiq, ARQ, Prefect |
|
|
811
817
|
| **Billing** | Stripe subscriptions (seat-based), credits + usage metering, invoices, Customer Portal |
|
|
812
818
|
| **Caching & State** | Redis, fastapi-cache2 |
|
|
813
|
-
| **Security** |
|
|
819
|
+
| **Security** | Per-plan sliding-window rate limiting (per user / org / IP), CORS, SSRF-guarded webhook delivery, httpOnly + SameSite session cookies |
|
|
814
820
|
| **Observability** | Logfire, LangSmith, Sentry, Prometheus |
|
|
815
821
|
| **Admin** | SQLAdmin panel with auth |
|
|
816
822
|
| **Collaboration** | Conversation sharing (direct + link), admin conversation browser |
|
|
@@ -832,7 +838,7 @@ They also ship a ready-to-use **`.claude/` toolkit** that adapts to the options
|
|
|
832
838
|
│ │
|
|
833
839
|
│ ┌─────────────────────────────────────────────────────────────────┐ │
|
|
834
840
|
│ │ AI AGENTS │ │
|
|
835
|
-
│ │
|
|
841
|
+
│ │ Pydantic AI · LangChain · LangGraph · DeepAgents │ │
|
|
836
842
|
│ │ ──────────────────────────────────────────────────────────── │ │
|
|
837
843
|
│ │ Tools: datetime · web_search (Tavily) · search_knowledge_base │ │
|
|
838
844
|
│ │ Providers: OpenAI · Anthropic · Gemini · OpenRouter │ │
|
|
@@ -942,7 +948,7 @@ See [Architecture Documentation](https://github.com/vstorm-co/full-stack-ai-agen
|
|
|
942
948
|
Choose from **5 AI frameworks** and **4 LLM providers** when generating your project:
|
|
943
949
|
|
|
944
950
|
```bash
|
|
945
|
-
#
|
|
951
|
+
# Pydantic AI with OpenAI (default)
|
|
946
952
|
fastapi-fullstack create my_app --ai-framework pydantic_ai
|
|
947
953
|
|
|
948
954
|
# LangGraph with Anthropic
|
|
@@ -957,15 +963,17 @@ fastapi-fullstack create my_app --rag --database postgresql --task-queue celery
|
|
|
957
963
|
|
|
958
964
|
### Supported Combinations
|
|
959
965
|
|
|
960
|
-
| Framework | OpenAI | Anthropic | Gemini | OpenRouter |
|
|
961
|
-
|
|
962
|
-
| **
|
|
963
|
-
| **
|
|
964
|
-
| **LangChain** | ✓ | ✓ | ✓ | - |
|
|
965
|
-
| **LangGraph** | ✓ | ✓ | ✓ | - |
|
|
966
|
-
| **DeepAgents** | ✓ | ✓ | ✓ | - |
|
|
966
|
+
| Framework | OpenAI | Anthropic | Gemini | OpenRouter | OpenAI-compatible |
|
|
967
|
+
|-----------|:------:|:---------:|:------:|:----------:|:-----------------:|
|
|
968
|
+
| **Pydantic AI** | ✓ | ✓ | ✓ | ✓ | ✓ |
|
|
969
|
+
| **Pydantic Deep Agents** | ✓ | ✓ | ✓ | ✓ | ✓ |
|
|
970
|
+
| **LangChain** | ✓ | ✓ | ✓ | - | - |
|
|
971
|
+
| **LangGraph** | ✓ | ✓ | ✓ | - | - |
|
|
972
|
+
| **DeepAgents** | ✓ | ✓ | ✓ | - | - |
|
|
973
|
+
|
|
974
|
+
**OpenAI-compatible** (`--llm-provider openai_compatible`) reaches any gateway or server that speaks the OpenAI API by its base URL: model routers and LLM gateways (LiteLLM, Requesty, OrcaRouter, Portkey) and self-hosted servers (vLLM, llama.cpp, LM Studio, Ollama). Set `OPENAI_COMPATIBLE_BASE_URL`, `AI_MODEL` as the endpoint names it, and `OPENAI_COMPATIBLE_API_KEY` if it checks one.
|
|
967
975
|
|
|
968
|
-
###
|
|
976
|
+
### Pydantic AI Integration
|
|
969
977
|
|
|
970
978
|
Type-safe agents with full dependency injection:
|
|
971
979
|
|
|
@@ -1034,7 +1042,7 @@ Each framework has its own observability solution:
|
|
|
1034
1042
|
|
|
1035
1043
|
| Framework | Observability | Dashboard |
|
|
1036
1044
|
|-----------|--------------|-----------|
|
|
1037
|
-
| **
|
|
1045
|
+
| **Pydantic AI** | [Logfire](https://logfire.pydantic.dev) | Agent runs, tool calls, token usage |
|
|
1038
1046
|
| **LangChain** | [LangSmith](https://smith.langchain.com) | Traces, feedback, datasets |
|
|
1039
1047
|
|
|
1040
1048
|
See [AI Agent Documentation](https://github.com/vstorm-co/full-stack-ai-agent-template/blob/main/docs/ai-agent.md) for more.
|
|
@@ -1089,7 +1097,7 @@ uv run my_app rag-sync-s3 --collection docs --prefix reports/ --bucket my-bucket
|
|
|
1089
1097
|
|
|
1090
1098
|
## 📊 Observability
|
|
1091
1099
|
|
|
1092
|
-
### Logfire (for
|
|
1100
|
+
### Logfire (for Pydantic AI)
|
|
1093
1101
|
|
|
1094
1102
|
[Logfire](https://logfire.pydantic.dev) provides complete observability for your application - from AI agents to database queries. Built by the Pydantic team, it offers first-class support for the entire Python ecosystem.
|
|
1095
1103
|
|
|
@@ -1097,7 +1105,7 @@ uv run my_app rag-sync-s3 --collection docs --prefix reports/ --bucket my-bucket
|
|
|
1097
1105
|
graph LR
|
|
1098
1106
|
subgraph Your App
|
|
1099
1107
|
API[FastAPI]
|
|
1100
|
-
Agent[
|
|
1108
|
+
Agent[Pydantic AI]
|
|
1101
1109
|
DB[(Database)]
|
|
1102
1110
|
Cache[(Redis)]
|
|
1103
1111
|
Queue[Celery/Taskiq]
|
|
@@ -1120,7 +1128,7 @@ graph LR
|
|
|
1120
1128
|
|
|
1121
1129
|
| Component | What You See |
|
|
1122
1130
|
|-----------|-------------|
|
|
1123
|
-
| **
|
|
1131
|
+
| **Pydantic AI** | Agent runs, tool calls, LLM requests, token usage, streaming events |
|
|
1124
1132
|
| **FastAPI** | Request/response traces, latency, status codes, route performance |
|
|
1125
1133
|
| **PostgreSQL** | Query execution time, slow queries, connection pool stats |
|
|
1126
1134
|
| **Redis** | Cache hits/misses, command latency, key patterns |
|
|
@@ -1294,7 +1302,7 @@ generated_at = "2024-12-21T10:30:00+00:00"
|
|
|
1294
1302
|
| **Auth** | `jwt`, `api_key`, `both`, `none` | JWT includes user management |
|
|
1295
1303
|
| **OAuth** | `none`, `google` | Social login |
|
|
1296
1304
|
| **AI Framework** | `pydantic_ai`, `pydantic_deep`, `langchain`, `langgraph`, `deepagents` | Choose your AI agent framework |
|
|
1297
|
-
| **LLM Provider** | `openai`, `anthropic`, `google`, `openrouter` | OpenRouter only with
|
|
1305
|
+
| **LLM Provider** | `openai`, `anthropic`, `google`, `openrouter`, `openai_compatible`, `all` | OpenRouter and OpenAI-compatible only with Pydantic AI / Pydantic Deep Agents |
|
|
1298
1306
|
| **RAG** | `--rag` | Enable RAG with vector database |
|
|
1299
1307
|
| **Vector Store** | `milvus`, `qdrant`, `chromadb`, `pgvector` | pgvector uses existing PostgreSQL |
|
|
1300
1308
|
| **Background Tasks** | `none`, `celery`, `taskiq`, `arq`, `prefect` | Distributed queues / orchestration |
|
|
@@ -1315,10 +1323,10 @@ Select what you need:
|
|
|
1315
1323
|
```bash
|
|
1316
1324
|
fastapi-fullstack new
|
|
1317
1325
|
# ✓ Redis (caching/sessions)
|
|
1318
|
-
# ✓ Rate limiting (
|
|
1326
|
+
# ✓ Rate limiting (per user/org/IP, Redis or in-memory)
|
|
1319
1327
|
# ✓ Pagination (fastapi-pagination)
|
|
1320
1328
|
# ✓ Admin Panel (SQLAdmin)
|
|
1321
|
-
# ✓ AI Agent (
|
|
1329
|
+
# ✓ AI Agent (Pydantic AI or LangChain)
|
|
1322
1330
|
# ✓ Webhooks
|
|
1323
1331
|
# ✓ Sentry
|
|
1324
1332
|
# ✓ Logfire / LangSmith
|
|
@@ -1340,7 +1348,7 @@ Setting up a production AI agent stack manually means wiring together 10+ tools
|
|
|
1340
1348
|
# 2. Configure SQLAlchemy + Alembic migrations
|
|
1341
1349
|
# 3. Implement JWT auth with refresh tokens
|
|
1342
1350
|
# 4. Build WebSocket streaming for AI responses
|
|
1343
|
-
# 5. Integrate
|
|
1351
|
+
# 5. Integrate Pydantic AI/LangChain with tool calling
|
|
1344
1352
|
# 6. Set up RAG pipeline (parsing, chunking, embedding, vector store)
|
|
1345
1353
|
# 7. Configure Celery + Redis for background tasks
|
|
1346
1354
|
# 8. Build Next.js frontend with auth and chat UI
|
|
@@ -1410,7 +1418,7 @@ The generated project is plain code — no lock-in or runtime dependency on the
|
|
|
1410
1418
|
<details>
|
|
1411
1419
|
<summary><b>Can I use a different LLM provider than the one I selected?</b></summary>
|
|
1412
1420
|
|
|
1413
|
-
Yes. The LLM provider is configured via environment variables (`AI_MODEL`, `OPENAI_API_KEY`, etc.). You can switch providers by changing the `.env` file and the model name — no code changes needed for
|
|
1421
|
+
Yes. The LLM provider is configured via environment variables (`AI_MODEL`, `OPENAI_API_KEY`, etc.). You can switch providers by changing the `.env` file and the model name — no code changes needed for Pydantic AI (which supports all providers natively).
|
|
1414
1422
|
|
|
1415
1423
|
</details>
|
|
1416
1424
|
|
|
@@ -1422,7 +1430,7 @@ Yes. The LLM provider is configured via environment variables (`AI_MODEL`, `OPEN
|
|
|
1422
1430
|
|----------|-------------|
|
|
1423
1431
|
| [Architecture](https://github.com/vstorm-co/full-stack-ai-agent-template/blob/main/docs/architecture.md) | Repository + Service pattern, layered design |
|
|
1424
1432
|
| [Frontend](https://github.com/vstorm-co/full-stack-ai-agent-template/blob/main/docs/frontend.md) | Next.js setup, auth, state management |
|
|
1425
|
-
| [AI Agent](https://github.com/vstorm-co/full-stack-ai-agent-template/blob/main/docs/ai-agent.md) |
|
|
1433
|
+
| [AI Agent](https://github.com/vstorm-co/full-stack-ai-agent-template/blob/main/docs/ai-agent.md) | Pydantic AI, tools, WebSocket streaming |
|
|
1426
1434
|
| [Observability](https://github.com/vstorm-co/full-stack-ai-agent-template/blob/main/docs/observability.md) | Logfire integration, tracing, metrics |
|
|
1427
1435
|
| [Deployment](https://github.com/vstorm-co/full-stack-ai-agent-template/blob/main/docs/deployment.md) | Docker, Kubernetes, production setup |
|
|
1428
1436
|
| [Development](https://github.com/vstorm-co/full-stack-ai-agent-template/blob/main/docs/development.md) | Local setup, testing, debugging |
|
|
@@ -1432,7 +1440,7 @@ Yes. The LLM provider is configured via environment variables (`AI_MODEL`, `OPEN
|
|
|
1432
1440
|
|
|
1433
1441
|
## Star History
|
|
1434
1442
|
|
|
1435
|
-
[](https://www.star-history.com/#vstorm-co/full-stack-ai-agent-template&type=date&legend=top-left)
|
|
1436
1444
|
|
|
1437
1445
|
---
|
|
1438
1446
|
|