mirror of
https://github.com/arc53/DocsGPT.git
synced 2025-12-01 17:43:15 +00:00
* feat: Implement model registry and capabilities for multi-provider support - Added ModelRegistry to manage available models and their capabilities. - Introduced ModelProvider enum for different LLM providers. - Created ModelCapabilities dataclass to define model features. - Implemented methods to load models based on API keys and settings. - Added utility functions for model management in model_utils.py. - Updated settings.py to include provider-specific API keys. - Refactored LLM classes (Anthropic, OpenAI, Google, etc.) to utilize new model registry. - Enhanced utility functions to handle token limits and model validation. - Improved code structure and logging for better maintainability. * feat: Add model selection feature with API integration and UI component * feat: Add model selection and default model functionality in agent management * test: Update assertions and formatting in stream processing tests * refactor(llm): Standardize model identifier to model_id * fix tests --------- Co-authored-by: Alex <a@tushynski.me>
63 lines
2.2 KiB
TypeScript
63 lines
2.2 KiB
TypeScript
import { useTranslation } from 'react-i18next';
|
|
|
|
import DocsGPT3 from './assets/cute_docsgpt3.svg';
|
|
import DropdownModel from './components/DropdownModel';
|
|
|
|
export default function Hero({
|
|
handleQuestion,
|
|
}: {
|
|
handleQuestion: ({
|
|
question,
|
|
isRetry,
|
|
}: {
|
|
question: string;
|
|
isRetry?: boolean;
|
|
}) => void;
|
|
}) {
|
|
const { t } = useTranslation();
|
|
const demos = t('demo', { returnObjects: true }) as Array<{
|
|
header: string;
|
|
query: string;
|
|
}>;
|
|
|
|
return (
|
|
<div className="text-black-1000 dark:text-bright-gray flex h-full w-full flex-col items-center justify-between">
|
|
{/* Header Section */}
|
|
<div className="flex grow flex-col items-center justify-center pt-8 md:pt-0">
|
|
<div className="mb-4 flex items-center">
|
|
<span className="text-4xl font-semibold">DocsGPT</span>
|
|
<img className="mb-1 inline w-14" src={DocsGPT3} alt="docsgpt" />
|
|
</div>
|
|
{/* Model Selector */}
|
|
<div className="relative w-72">
|
|
<DropdownModel />
|
|
</div>
|
|
</div>
|
|
|
|
{/* Demo Buttons Section */}
|
|
<div className="mb-3 w-full max-w-full md:mb-3">
|
|
<div className="grid grid-cols-1 gap-3 text-xs md:grid-cols-1 md:gap-4 lg:grid-cols-2">
|
|
{demos?.map(
|
|
(demo: { header: string; query: string }, key: number) =>
|
|
demo.header &&
|
|
demo.query && (
|
|
<button
|
|
key={key}
|
|
onClick={() => handleQuestion({ question: demo.query })}
|
|
className={`border-dark-gray text-just-black hover:bg-cultured dark:border-dim-gray dark:text-chinese-white dark:hover:bg-charleston-green w-full rounded-[66px] border bg-transparent px-6 py-[14px] text-left transition-colors ${key >= 2 ? 'hidden md:block' : ''}`}
|
|
>
|
|
<p className="text-black-1000 dark:text-bright-gray mb-2 font-semibold">
|
|
{demo.header}
|
|
</p>
|
|
<span className="line-clamp-2 text-gray-700 opacity-60 dark:text-gray-300">
|
|
{demo.query}
|
|
</span>
|
|
</button>
|
|
),
|
|
)}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|