/usr/share/grafana/public/app/features/dashboard/components/GenAI
import { Dashboard, Panel } from '@grafana/schema'; import { GenAIButton } from './GenAIButton'; import { EventTrackingSrc } from './tracking'; import { Message, Role, getFilteredPanelString } from './utils'; interface GenAIPanelTitleButtonProps { onGenerate: (title: string) => void; panel: Panel; dashboard: Dashboard; } const PANEL_TITLE_CHAR_LIMIT = 50; const TITLE_GENERATION_STANDARD_PROMPT = 'You are an expert in creating Grafana Panels.' + 'Your goal is to write short, descriptive, and concise panel title.' + `The title should be shorter than ${PANEL_TITLE_CHAR_LIMIT} characters.`; export const GenAIPanelTitleButton = ({ onGenerate, panel, dashboard }: GenAIPanelTitleButtonProps) => { return ( <GenAIButton messages={() => getMessages(panel, dashboard)} onGenerate={onGenerate} eventTrackingSrc={EventTrackingSrc.panelTitle} toggleTipTitle={'Improve your panel title'} /> ); }; function getMessages(panel: Panel, dashboard: Dashboard): Message[] { const panelString = getFilteredPanelString(panel); return [ { content: TITLE_GENERATION_STANDARD_PROMPT, role: Role.system, }, { content: `The panel is part of a dashboard with the title: ${dashboard.title}\n` + `The panel is part of a dashboard with the description: ${dashboard.description}\n` + `Use this JSON object which defines the panel: ${panelString}`, role: Role.user, }, ]; }
.
Edit
..
Edit
GenAIButton.test.tsx
Edit
GenAIButton.tsx
Edit
GenAIDashDescriptionButton.tsx
Edit
GenAIDashTitleButton.tsx
Edit
GenAIDashboardChangesButton.tsx
Edit
GenAIHistory.tsx
Edit
GenAIPanelDescriptionButton.tsx
Edit
GenAIPanelTitleButton.tsx
Edit
GenerationHistoryCarousel.tsx
Edit
MinimalisticPagination.tsx
Edit
QuickFeedback.tsx
Edit
hooks.ts
Edit
jsonDiffText.test.ts
Edit
jsonDiffText.ts
Edit
tracking.ts
Edit
utils.test.ts
Edit
utils.ts
Edit