Skip to main content

syncfusion-blazor-inline-ai-assist

Implement Blazor Inline AI Assist component for seamless AI-powered text editing and content generation. Covers setup in WebAssembly and Web App projects, event handling, AI provider integration (Azure OpenAI, OpenAI, Ollama, Gemini), customization, accessibility, and enterprise deployment patterns.

Informations de source

Dépôt
syncfusion/blazor-ui-components-skills
Dernière activité de la source
14 juillet 2026 à 05:10
Langue détectée de SKILL.md
anglais
Étoiles
4
Forks
1

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Explorateur de fichiers
7 fichiers

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
syncfusion-blazor-inline-ai-assist
description
Implement Blazor Inline AI Assist component for seamless AI-powered text editing and content generation. Covers setup in WebAssembly and Web App projects, event handling, AI provider integration (Azure OpenAI, OpenAI, Ollama, Gemini), customization, accessibility, and enterprise deployment patterns.
metadata
{"author":"Syncfusion Inc","version":"34.1.29"}
# Blazor Inline AI Assist Component Skill The Inline AI Assist component enables developers to build AI-powered text editing experiences in Blazor applications. It provides a flexible UI for prompt entry, configurable AI provider integration, and comprehensive customization options for enterprise applications. ## Component Overview The **SfInlineAIAssist** component enables users to prompt AI services and receive intelligent responses directly within their interface, with flexible display modes and extensive customization options such as: - **Dual Response Modes:** Display AI responses inline at the cursor position or in a popup overlay for flexible UI integration. - **Command Actions:** Display predefined commands and quick-action suggestions using mention-style popups with customizable grouping and icons via CommandMenu. - **Response Actions:** Configurable actions such as Accept, Discard, and custom items using ResponseActions to manage AI-generated content. - **Action Toolbar:** Includes a toolbar in the prompt input area with a send button and custom actions. - **Markdown:** Automatic conversion of Markdown responses to HTML for rich content rendering. - **Streaming Responses:** Supports word-by-word or chunk-based streaming with real-time visual feedback and stop controls. - **Indicators:** Shows processing states using inline indicators and skeleton loading in popup mode. - **Customization:** Supports customization of templates, appearance, and response rendering. ## Navigation Guide ### Getting Started 📄 **Read:** [references/getting-started.md](references/getting-started.md) - WebAssembly App setup (Visual Studio, VS Code, .NET CLI) - Web App setup with interactive render modes - NuGet package installation (Syncfusion.Blazor.InteractiveChat) - Namespace imports and initial component rendering - Minimal working example to verify setup ### Events and Methods 📄 **Read:** [references/events-and-methods.md](references/events-and-methods.md) - Events: Created, PromptRequested, Opened, Closed - Methods: AddResponse, RefreshContent, ShowPopupAsync, HidePopupAsync - Event handling patterns and error management - Response lifecycle and management - Real-world event scenarios ### Commands and Toolbar 📄 **Read:** [references/commands-and-toolbar.md](references/commands-and-toolbar.md) - Command configuration with labels, prompts, icons, and grouping - CommandMenu tag helper and command popup sizing - Inline toolbar with custom action buttons - ItemSelect event for commands and ItemClick event for toolbar - Real-world command examples (Summarize, Rewrite, Translate) ### AI Provider Integration 📄 **Read:** [references/ai-integration.md](references/ai-integration.md) - Microsoft.Extensions.AI framework setup - Azure OpenAI integration step-by-step - OpenAI direct integration - Ollama local LLM integration - Gemini API integration - LiteLLM proxy setup and configuration - Provider comparison and selection guidance ### Customization and Response Settings 📄 **Read:** [references/customization-and-response.md](references/customization-and-response.md) - ResponseMode property (Inline vs Popup display modes, dynamic switching) - PopupWidth, PopupHeight, ZIndex configuration - Placeholder, RelateTo, Target, EnableStreaming properties - Response settings (streaming, formatting, templates) - Custom response items configuration - Appearance customization with CSSClass - EditorTemplate and ResponseTemplate usage - Responsive design patterns ### Accessibility and Globalization 📄 **Read:** [references/accessibility-and-globalization.md](references/accessibility-and-globalization.md) - WCAG 2.2 AA compliance features - Keyboard navigation support (Tab, Arrow Keys, Enter) - ARIA attributes and screen reader support - Globalization and RTL (Right-to-Left) support - Localization configuration - Mobile device accessibility ## Quick Start Example Here's a minimal working example to verify your setup: ```razor @using Syncfusion.Blazor.InteractiveChat @using Syncfusion.Blazor.Buttons <div style="height: 350px; width: 650px;"> <SfButton id="aiButton" IsPrimary="true" @onclick="OnButtonClick"> Ask AI </SfButton> <div id="editableText" contenteditable="true" style="border: 1px solid #ddd; padding: 10px; margin-top: 10px;"> <p>Enter your text here for AI processing...</p> </div> <SfInlineAIAssist @ref="inlineAssist" RelateTo="#aiButton" PromptRequested="OnPromptRequested"> <ResponseActions ItemSelect="OnResponseItemSelect"></ResponseActions> </SfInlineAIAssist> </div> @code { private SfInlineAIAssist inlineAssist = new(); private async Task OnButtonClick() { await inlineAssist.ShowPopupAsync(); } private async Task OnPromptRequested(PromptRequestedEventArgs args) { // Connect to your AI provider here (Azure OpenAI, OpenAI, etc.) // For this example, return a simple response string response = $"Processing your request: {args.Prompt}"; await inlineAssist.UpdateResponseAsync(response, true); } private async Task OnResponseItemSelect(ResponseItemSelectEventArgs args) { if (args.Item.Label == "Accept") { await inlineAssist.HidePopupAsync(); } else if (args.Item.Label == "Discard") { await inlineAssist.HidePopupAsync(); } } } ``` ## Common Patterns ### Pattern 1: Content Summarization ```razor <SfButton id="summarizeButton" @onclick="OnSummarizeClick"> Summarize </SfButton> <SfInlineAIAssist @ref="inlineAssist" RelateTo="#summarizeButton" PromptRequested="OnSummarizeRequest"> </SfInlineAIAssist> @code { private async Task OnSummarizeClick() { await inlineAssist.ShowPopupAsync(); } private async Task OnSummarizeRequest(PromptRequestedEventArgs args) { // Send to AI provider with system prompt: // "Summarize the following text in 2-3 sentences: " + selectedText await inlineAssist.UpdateResponseAsync(summaryResult, true); } } ``` ### Pattern 2: Custom Commands ```razor <SfInlineAIAssist @ref="inlineAssist" PromptRequested="OnPromptRequested"> <CommandMenu Commands="commandItems"></CommandMenu> </SfInlineAIAssist> @code { private List<CommandItem> commandItems = new List<CommandItem> { new CommandItem { Label = "Summarize", Prompt = "Summarize this text", IconCss = "e-icons e-collapse-2" }, new CommandItem { Label = "Translate", Prompt = "Translate to Spanish", IconCss = "e-icons e-translate" }, new CommandItem { Label = "Rewrite", Prompt = "Rewrite in professional tone", IconCss = "e-icons e-edit" } }; } ``` ### Pattern 3: Response Management ```razor <SfInlineAIAssist @ref="inlineAssist" PromptRequested="OnPromptRequested"> <ResponseActions Items="customResponseItems" ItemSelect="OnResponseAction"> </ResponseActions> </SfInlineAIAssist> @code { private List<ResponseItem> customResponseItems = new() { new ResponseItem { Label = "Regenerate", IconCss = "e-icons e-refresh", Tooltip = "Generate new response" }, new ResponseItem { Label = "Copy", IconCss = "e-icons e-copy", Tooltip = "Copy to clipboard" }, new ResponseItem { Label = "Insert", IconCss = "e-icons e-insert", Tooltip = "Insert into document" } }; } ``` ## Key Props | Property | Type | Purpose | |----------|------|---------| | `RelateTo` | string | Anchor element selector for popup positioning (e.g., "#aiButton") | | `Target` | string | DOM selector where the component container is appended (e.g., `"body"`, `"#app"`) | | `Placeholder` | string | Input field placeholder text (default: "Enter prompt") | | `ResponseMode` | ResponseDisplayMode | Display mode: `Inline` (at cursor) or `Popup` (overlay) | | `PopupWidth` | string | Popup width when ResponseMode is `Popup` (e.g., "400px") | | `PopupHeight` | string | Popup height for response display area (e.g., "300px" or "auto") | | `ZIndex` | int | CSS z-index for popup layering | | `EnableStreaming` | bool | Enable word-by-word streaming responses (default: `false`) | | `CssClass` | string | Custom CSS class for styling | | `PromptRequested` | EventCallback\<PromptRequestedEventArgs\> | Triggered when user submits a prompt | | `Created` | EventCallback | Fires when component is created and ready | | `Opened` | EventCallback\<OpenEventArgs\> | Triggered when popup opens | | `Closed` | EventCallback | Triggered when popup closes | | `Prompts` | IEnumerable\<PromptRecord\> | Read-only collection of submitted prompts and their responses | ## Programmatic Methods The Inline AI Assist component provides async methods for programmatic control: ### ShowPopupAsync() Opens the AI Assist popup at the RelatedTo element position: ```csharp @ref="inlineAssist" private SfInlineAIAssist inlineAssist; private async Task OpenAIAssist() { await inlineAssist.ShowPopupAsync(); } ``` ### HidePopupAsync() Closes the AI Assist popup: ```csharp private async Task CloseAIAssist() { await inlineAssist.HidePopupAsync(); } ``` ### UpdateResponseAsync(string response, bool isFinal) Sets or streams the AI response content: ```csharp private async Task OnPromptRequested(PromptRequestedEventArgs args) { // Non-streaming response await inlineAssist.UpdateResponseAsync("Generated response", true); // Streaming response (call multiple times) foreach (var chunk in streamedResponse) { await inlineAssist.UpdateResponseAsync(chunk, false); } // Final call with isFinal=true await inlineAssist.UpdateResponseAsync(lastChunk, true); } ``` ### ExecutePromptAsync(string prompt) Programmatically execute a prompt without user input: ```csharp private async Task ExecuteSamplePrompt() { await inlineAssist.ExecutePromptAsync("Summarize the selected text in 2 sentences"); } ``` ### ShowCommandPopupAsync() Opens the command menu popup programmatically. The main popup should be open first. ```csharp private async Task OpenCommands() { await inlineAssist.ShowPopupAsync(); await inlineAssist.ShowCommandPopupAsync(); } ``` ### HideCommandPopupAsync() Closes the command menu popup programmatically. ```csharp private async Task CloseCommands() { await inlineAssist.HideCommandPopupAsync(); } ``` ## Common Use Cases 1. **Content Summarization** - Summarize selected text with AI 2. **Grammar & Tone Refinement** - Rewrite content in professional tone 3. **Translation** - Translate selected text to different languages 4. **Code Generation** - Generate code snippets from descriptions 5. **Email Composition** - Draft emails with AI assistance 6. **Form Completion** - Auto-fill form fields with AI suggestions
Voir sur GitHub