diff --git a/README.md b/README.md index 6fe69ed0e..d669308c6 100644 --- a/README.md +++ b/README.md @@ -235,3 +235,21 @@ If you would like to support the team, consider sponsoring us through one of the | Wechat (Ayaka) | | Thank you for being a part of our community, and we look forward to serving you better in the future. + +# Adding new settings +Example of files that had to be changed in order for a new settings to be added (e.g. ImageDetail for each chat + default config) +```plaintext +- public/locales/en/main.json +- public/locales/en/model.json +- src/assets/icons/AttachmentIcon.tsx +- src/components/Chat/ChatContent/ChatTitle.tsx +- src/components/Chat/ChatContent/Message/EditView.tsx +- src/components/ChatConfigMenu/ChatConfigMenu.tsx +- src/components/ConfigMenu/ConfigMenu.tsx +- src/constants/chat.ts +- src/store/config-slice.ts +- src/store/migrate.ts +- src/store/store.ts +- src/types/chat.ts +- src/utils/import.ts +``` \ No newline at end of file diff --git a/package.json b/package.json index cd3e96e70..b5a37bfcf 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "better-chatgpt", "private": true, - "version": "1.5.0", + "version": "1.6.0", "type": "module", "homepage": "./", "main": "electron/index.cjs", @@ -89,6 +89,7 @@ "react-i18next": "^12.2.0", "react-markdown": "^8.0.5", "react-scroll-to-bottom": "^4.2.0", + "react-select": "^5.8.0", "react-toastify": "^10.0.5", "rehype-highlight": "^6.0.0", "rehype-katex": "^6.0.2", diff --git a/public/locales/en/main.json b/public/locales/en/main.json index 831f51249..cba7a9dd5 100644 --- a/public/locales/en/main.json +++ b/public/locales/en/main.json @@ -36,6 +36,7 @@ "resetCost": "Reset Costs", "countTotalTokens": "Count total tokens", "displayChatSize": "Display chat size in title", + "defaultImageDetail": "Image detail (auto, high, low resolution)", "morePrompts": "You can find more prompts here: ", "clearPrompts": "Clear prompts", "postOnShareGPT": { diff --git a/public/locales/en/model.json b/public/locales/en/model.json index 830d6985f..510cb2d03 100644 --- a/public/locales/en/model.json +++ b/public/locales/en/model.json @@ -25,5 +25,11 @@ }, "defaultChatConfig": "Default Chat Config", "defaultSystemMessage": "Default System Message", - "resetToDefault": "Reset To Default" + "resetToDefault": "Reset To Default", + "imageDetail": { + "label": "Image Detail", + "low": "low", + "high": "high", + "auto": "auto" + } } diff --git a/src/api/api.ts b/src/api/api.ts index ba1dbc38f..dbf710816 100644 --- a/src/api/api.ts +++ b/src/api/api.ts @@ -1,11 +1,10 @@ import { ShareGPTSubmitBodyInterface } from '@type/api'; import { ConfigInterface, - ImageContentInterface, MessageInterface, - ModelOptions, } from '@type/chat'; import { isAzureEndpoint } from '@utils/api'; +import { ModelOptions } from '@utils/modelReader'; export const getChatCompletion = async ( endpoint: string, diff --git a/src/assets/icons/AttachmentIcon.tsx b/src/assets/icons/AttachmentIcon.tsx index 2a2c5bbea..b32afdff3 100644 --- a/src/assets/icons/AttachmentIcon.tsx +++ b/src/assets/icons/AttachmentIcon.tsx @@ -11,9 +11,9 @@ const AttachmentIcon = () => { > ); diff --git a/src/components/Chat/ChatContent/ChatTitle.tsx b/src/components/Chat/ChatContent/ChatTitle.tsx index bfa0f1a44..01aabecce 100644 --- a/src/components/Chat/ChatContent/ChatTitle.tsx +++ b/src/components/Chat/ChatContent/ChatTitle.tsx @@ -3,18 +3,18 @@ import { useTranslation } from 'react-i18next'; import { shallow } from 'zustand/shallow'; import useStore from '@store/store'; import ConfigMenu from '@components/ConfigMenu'; -import { ChatInterface, ConfigInterface } from '@type/chat'; +import { ChatInterface, ConfigInterface, ImageDetail } from '@type/chat'; import { _defaultChatConfig } from '@constants/chat'; const ChatTitle = React.memo(() => { const { t } = useTranslation('model'); - const config = useStore( + const chat = useStore( (state) => state.chats && state.chats.length > 0 && state.currentChatIndex >= 0 && state.currentChatIndex < state.chats.length - ? state.chats[state.currentChatIndex].config + ? state.chats[state.currentChatIndex] : undefined, shallow ); @@ -30,17 +30,25 @@ const ChatTitle = React.memo(() => { setChats(updatedChats); }; + const setImageDetail = (imageDetail: ImageDetail) => { + const updatedChats: ChatInterface[] = JSON.parse( + JSON.stringify(useStore.getState().chats) + ); + updatedChats[currentChatIndex].imageDetail = imageDetail; + setChats(updatedChats); + }; + // for migrating from old ChatInterface to new ChatInterface (with config) useEffect(() => { const chats = useStore.getState().chats; - if (chats && chats.length > 0 && currentChatIndex !== -1 && !config) { + if (chats && chats.length > 0 && currentChatIndex !== -1 && !chat?.config) { const updatedChats: ChatInterface[] = JSON.parse(JSON.stringify(chats)); updatedChats[currentChatIndex].config = { ..._defaultChatConfig }; setChats(updatedChats); } }, [currentChatIndex]); - return config ? ( + return chat ? ( <>
{ }} >
- {t('model')}: {config.model} + {t('model')}: {chat.config.model} +
+
+ {t('token.label')}: {chat.config.max_tokens}
- {t('token.label')}: {config.max_tokens} + {t('temperature.label')}: {chat.config.temperature}
- {t('temperature.label')}: {config.temperature} + {t('topP.label')}: {chat.config.top_p}
- {t('topP.label')}: {config.top_p} + {t('presencePenalty.label')}: {chat.config.presence_penalty}
- {t('presencePenalty.label')}: {config.presence_penalty} + {t('frequencyPenalty.label')}: {chat.config.frequency_penalty}
- {t('frequencyPenalty.label')}: {config.frequency_penalty} + {t('imageDetail.label')}: {chat.imageDetail}
{isModalOpen && ( )} @@ -80,4 +93,4 @@ const ChatTitle = React.memo(() => { ); }); -export default ChatTitle; +export default ChatTitle; \ No newline at end of file diff --git a/src/components/Chat/ChatContent/Message/View/EditView.tsx b/src/components/Chat/ChatContent/Message/View/EditView.tsx index d09963cdb..f220dcbe6 100644 --- a/src/components/Chat/ChatContent/Message/View/EditView.tsx +++ b/src/components/Chat/ChatContent/Message/View/EditView.tsx @@ -8,15 +8,16 @@ import { ChatInterface, ContentInterface, ImageContentInterface, - ModelOptions, TextContentInterface, } from '@type/chat'; import PopupModal from '@components/PopupModal'; import TokenCount from '@components/TokenCount'; import CommandPrompt from '../CommandPrompt'; -import { defaultModel, modelTypes } from '@constants/chat'; +import { defaultModel } from '@constants/chat'; import AttachmentIcon from '@icon/AttachmentIcon'; +import { ModelOptions } from '@utils/modelReader'; +import { modelTypes } from '@constants/modelLoader'; const EditView = ({ content: content, @@ -97,6 +98,10 @@ const EditView = ({ }; const handleFileChange = async (e: React.ChangeEvent) => { + const updatedChats: ChatInterface[] = JSON.parse( + JSON.stringify(useStore.getState().chats) + ); + const chat = updatedChats[currentChatIndex]; const files = e.target.files!; const newImageURLs = Array.from(files).map((file: Blob) => URL.createObjectURL(file) @@ -107,7 +112,7 @@ const EditView = ({ return { type: 'image_url', image_url: { - detail: 'auto', + detail: chat.imageDetail, url: (await blobToBase64(blob)) as string, }, } as ImageContentInterface; @@ -120,11 +125,14 @@ const EditView = ({ const handleImageUrlChange = () => { if (imageUrl.trim() === '') return; - + const updatedChats: ChatInterface[] = JSON.parse( + JSON.stringify(useStore.getState().chats) + ); + const chat = updatedChats[currentChatIndex]; const newImage: ImageContentInterface = { type: 'image_url', image_url: { - detail: 'auto', + detail: chat.imageDetail, url: imageUrl, }, }; @@ -148,12 +156,13 @@ const EditView = ({ }; const handleSave = () => { - if ( - sticky && - ((_content[0] as TextContentInterface).text === '' || - useStore.getState().generating) - ) + const hasTextContent = (_content[0] as TextContentInterface).text !== ''; + const hasImageContent = _content.some(content => content.type === 'image_url'); + + if (sticky && (!hasTextContent && !hasImageContent || useStore.getState().generating)) { return; + } + const updatedChats: ChatInterface[] = JSON.parse( JSON.stringify(useStore.getState().chats) ); @@ -177,14 +186,20 @@ const EditView = ({ const { handleSubmit } = useSubmit(); const handleGenerate = () => { - if (useStore.getState().generating) return; + const hasTextContent = (_content[0] as TextContentInterface).text !== ''; + const hasImageContent = _content.some(content => content.type === 'image_url'); + + if (!hasTextContent && !hasImageContent || useStore.getState().generating) { + return; + } + const updatedChats: ChatInterface[] = JSON.parse( JSON.stringify(useStore.getState().chats) ); const updatedMessages = updatedChats[currentChatIndex].messages; - + if (sticky) { - if ((_content[0] as TextContentInterface).text !== '') { + if (hasTextContent || hasImageContent) { updatedMessages.push({ role: inputRole, content: _content }); } _setContent([ @@ -212,6 +227,10 @@ const EditView = ({ const handlePaste = async (e: React.ClipboardEvent) => { const items = e.clipboardData.items; + const updatedChats: ChatInterface[] = JSON.parse( + JSON.stringify(useStore.getState().chats) + ); + const chat = updatedChats[currentChatIndex]; for (const item of items) { if (item.type.startsWith('image/')) { const blob = item.getAsFile(); @@ -220,7 +239,7 @@ const EditView = ({ const newImage: ImageContentInterface = { type: 'image_url', image_url: { - detail: 'auto', + detail: chat.imageDetail, url: base64Image, }, }; @@ -492,4 +511,4 @@ const EditViewButtons = memo( } ); -export default EditView; +export default EditView; \ No newline at end of file diff --git a/src/components/ChatConfigMenu/ChatConfigMenu.tsx b/src/components/ChatConfigMenu/ChatConfigMenu.tsx index 9adfa5b8a..39cd72388 100644 --- a/src/components/ChatConfigMenu/ChatConfigMenu.tsx +++ b/src/components/ChatConfigMenu/ChatConfigMenu.tsx @@ -2,9 +2,11 @@ import React, { useState } from 'react'; import useStore from '@store/store'; import { useTranslation } from 'react-i18next'; +import Select from 'react-select'; import PopupModal from '@components/PopupModal'; import { FrequencyPenaltySlider, + ImageDetailSelector, MaxTokenSlider, ModelSelector, PresencePenaltySlider, @@ -12,8 +14,13 @@ import { TopPSlider, } from '@components/ConfigMenu/ConfigMenu'; -import { ModelOptions } from '@type/chat'; -import { _defaultChatConfig, _defaultSystemMessage } from '@constants/chat'; +import { + _defaultChatConfig, + _defaultImageDetail, + _defaultSystemMessage, +} from '@constants/chat'; +import { ModelOptions } from '@utils/modelReader'; +import { ImageDetail } from '@type/chat'; const ChatConfigMenu = () => { const { t } = useTranslation('model'); @@ -42,6 +49,9 @@ const ChatConfigPopup = ({ const setDefaultSystemMessage = useStore( (state) => state.setDefaultSystemMessage ); + const setDefaultImageDetail = useStore( + (state) => state.setDefaultImageDetail + ); const [_systemMessage, _setSystemMessage] = useState( useStore.getState().defaultSystemMessage @@ -56,6 +66,9 @@ const ChatConfigPopup = ({ const [_frequencyPenalty, _setFrequencyPenalty] = useState( config.frequency_penalty ); + const [_imageDetail, _setImageDetail] = useState( + useStore.getState().defaultImageDetail + ); const { t } = useTranslation('model'); @@ -69,6 +82,7 @@ const ChatConfigPopup = ({ frequency_penalty: _frequencyPenalty, }); setDefaultSystemMessage(_systemMessage); + setDefaultImageDetail(_imageDetail); setIsModalOpen(false); }; @@ -79,7 +93,9 @@ const ChatConfigPopup = ({ _setTopP(_defaultChatConfig.top_p); _setPresencePenalty(_defaultChatConfig.presence_penalty); _setFrequencyPenalty(_defaultChatConfig.frequency_penalty); + _setImageDetail(_defaultImageDetail); _setSystemMessage(_defaultSystemMessage); + _setImageDetail(_defaultImageDetail); }; return ( @@ -93,7 +109,11 @@ const ChatConfigPopup = ({ _systemMessage={_systemMessage} _setSystemMessage={_setSystemMessage} /> - + + +
>; config: ConfigInterface; setConfig: (config: ConfigInterface) => void; + imageDetail: ImageDetail; + setImageDetail: (imageDetail: ImageDetail) => void; }) => { const [_maxToken, _setMaxToken] = useState(config.max_tokens); const [_model, _setModel] = useState(config.model); @@ -25,6 +29,7 @@ const ConfigMenu = ({ const [_frequencyPenalty, _setFrequencyPenalty] = useState( config.frequency_penalty ); + const [_imageDetail, _setImageDetail] = useState(imageDetail); const { t } = useTranslation('model'); const handleConfirm = () => { @@ -36,6 +41,7 @@ const ConfigMenu = ({ top_p: _topP, frequency_penalty: _frequencyPenalty, }); + setImageDetail(_imageDetail); setIsModalOpen(false); }; @@ -70,6 +76,10 @@ const ConfigMenu = ({ _frequencyPenalty={_frequencyPenalty} _setFrequencyPenalty={_setFrequencyPenalty} /> +
); @@ -84,46 +94,59 @@ export const ModelSelector = ({ _setModel: React.Dispatch>; _label: string; }) => { - const [dropDown, setDropDown] = useState(false); + const { t } = useTranslation('model'); + + const modelOptionsFormatted = modelOptions.map((model) => ({ + value: model, + label: model, + })); + const customStyles = { + control: (provided: any) => ({ + ...provided, + backgroundColor: '#2D3748', // Dark background color + color: '#E2E8F0', // Light text color + }), + menu: (provided: any) => ({ + ...provided, + backgroundColor: '#2D3748', // Dark background color + }), + option: (provided: any, state: any) => ({ + ...provided, + 'backgroundColor': state.isSelected ? '#4A5568' : '#2D3748', // Darker background for selected option + 'color': '#E2E8F0', // Light text color + '&:hover': { + backgroundColor: '#4A5568', // Darker background on hover + }, + }), + singleValue: (provided: any) => ({ + ...provided, + color: '#E2E8F0', // Light text color + }), + input: (provided: any) => ({ + ...provided, + color: '#E2E8F0', // Light text color for input + }), + placeholder: (provided: any) => ({ + ...provided, + color: '#A0AEC0', // Light gray color for placeholder + }), + }; return (
- - + option.value === _imageDetail + )} + onChange={(selectedOption) => + _setImageDetail(selectedOption?.value as ImageDetail) + } + options={imageDetailOptions} + className='basic-single' + classNamePrefix='select' + styles={customStyles} + /> +
+ ); +}; + export default ConfigMenu; diff --git a/src/components/SettingsMenu/AutoTitleToggle.tsx b/src/components/SettingsMenu/AutoTitleToggle.tsx index 379858e14..ba7e6397c 100644 --- a/src/components/SettingsMenu/AutoTitleToggle.tsx +++ b/src/components/SettingsMenu/AutoTitleToggle.tsx @@ -3,7 +3,7 @@ import { useTranslation } from 'react-i18next'; import useStore from '@store/store'; import Toggle from '@components/Toggle'; import { ModelSelector } from '@components/ConfigMenu/ConfigMenu'; -import { ModelOptions } from '@type/chat'; +import { ModelOptions } from '@utils/modelReader'; const AutoTitleToggle = () => { const { t } = useTranslation(['main', 'model']); diff --git a/src/components/SettingsMenu/TotalTokenCost.tsx b/src/components/SettingsMenu/TotalTokenCost.tsx index 6f5b613f2..b9d00b89a 100644 --- a/src/components/SettingsMenu/TotalTokenCost.tsx +++ b/src/components/SettingsMenu/TotalTokenCost.tsx @@ -3,12 +3,12 @@ import { useTranslation } from 'react-i18next'; import useStore from '@store/store'; -import { modelCost } from '@constants/chat'; import Toggle from '@components/Toggle/Toggle'; -import { ModelOptions, TotalTokenUsed } from '@type/chat'; - import CalculatorIcon from '@icon/CalculatorIcon'; +import { modelCost } from '@constants/modelLoader'; +import { TotalTokenUsed } from '@type/chat'; +import { ModelOptions } from '@utils/modelReader'; type CostMapping = { model: string; cost: number }[]; @@ -17,11 +17,19 @@ const tokenCostToCost = ( model: ModelOptions ) => { if (!tokenCost) return 0; - const { prompt, completion } = modelCost[model as keyof typeof modelCost]; + + const modelCostEntry = modelCost[model as keyof typeof modelCost]; + + if (!modelCostEntry) { + return -1; // Return -1 if the model does not exist in modelCost + } + + const { prompt, completion, image } = modelCostEntry; const completionCost = (completion.price / completion.unit) * tokenCost.completionTokens; - const promptCost = (prompt.price / prompt.unit) * tokenCost.promptTokens; - return completionCost + promptCost; + const promptCost = (prompt.price / prompt.unit) * tokenCost.promptTokens; + const imageCost = (image.price / image.unit) * (tokenCost.imageTokens ? 1 : 0); + return completionCost + promptCost + imageCost; }; const TotalTokenCost = () => { @@ -117,7 +125,6 @@ export const TotalTokenCostDisplay = () => { useEffect(() => { let updatedTotalCost = 0; - Object.entries(totalTokenUsed).forEach(([model, tokenCost]) => { updatedTotalCost += tokenCostToCost(tokenCost, model as ModelOptions); }); diff --git a/src/components/TokenCount/TokenCount.tsx b/src/components/TokenCount/TokenCount.tsx index 5ad12c9a0..59466ff41 100644 --- a/src/components/TokenCount/TokenCount.tsx +++ b/src/components/TokenCount/TokenCount.tsx @@ -3,10 +3,37 @@ import useStore from '@store/store'; import { shallow } from 'zustand/shallow'; import countTokens from '@utils/messageUtils'; -import { modelCost } from '@constants/chat'; +import { modelCost } from '@constants/modelLoader'; +import { TotalTokenUsed, isTextContent, isImageContent } from '@type/chat'; +import { ModelOptions } from '@utils/modelReader'; + +const tokenCostToCost = ( + tokenCost: TotalTokenUsed[ModelOptions], + model: ModelOptions +) => { + if (!tokenCost) return 0; + + const modelCostEntry = modelCost[model as keyof typeof modelCost]; + + if (!modelCostEntry) { + return -1; // Return -1 if the model does not exist in modelCost + } + + const { prompt, completion, image } = modelCostEntry; + const completionCost = + (completion.price / completion.unit) * tokenCost.completionTokens; + const promptCost = (prompt.price / prompt.unit) * tokenCost.promptTokens; + const imageCost = + image && tokenCost.imageTokens + ? (image.price / image.unit) * (tokenCost.imageTokens ? 1 : 0) + : 0; + + return completionCost + promptCost + imageCost; +}; const TokenCount = React.memo(() => { const [tokenCount, setTokenCount] = useState(0); + const [imageTokenCount, setImageTokenCount] = useState(0); const generating = useStore((state) => state.generating); const messages = useStore( (state) => @@ -21,15 +48,25 @@ const TokenCount = React.memo(() => { ); const cost = useMemo(() => { - const price = - modelCost[model].prompt.price * - (tokenCount / modelCost[model].prompt.unit); + const tokenCost: TotalTokenUsed[ModelOptions] = { + promptTokens: tokenCount, + completionTokens: 0, + imageTokens: imageTokenCount, + }; + const price = tokenCostToCost(tokenCost, model as ModelOptions); return price.toPrecision(3); - }, [model, tokenCount]); + }, [model, tokenCount, imageTokenCount]); useEffect(() => { - if (!generating) setTokenCount(countTokens(messages, model)); - }, [messages, generating]); + if (!generating) { + const textPrompts = messages.filter((e) => e.content.some(isTextContent)); + const imgPrompts = messages.filter((e) => e.content.some(isImageContent)); + const newPromptTokens = countTokens(textPrompts, model); + const newImageTokens = countTokens(imgPrompts, model); + setTokenCount(newPromptTokens); + setImageTokenCount(newImageTokens); + } + }, [messages, generating, model]); return (
diff --git a/src/constants/chat.ts b/src/constants/chat.ts index 170ae4ed0..96824e0ab 100644 --- a/src/constants/chat.ts +++ b/src/constants/chat.ts @@ -2,9 +2,7 @@ import { v4 as uuidv4 } from 'uuid'; import { ChatInterface, ConfigInterface, - ModelCost, - ModelOptions, - ModelType, + ImageDetail, TextContentInterface, } from '@type/chat'; import useStore from '@store/store'; @@ -24,146 +22,9 @@ export const _defaultSystemMessage = Carefully heed the user's instructions. Respond using Markdown.`; -export const modelOptions: ModelOptions[] = [ - 'gpt-3.5-turbo', - 'gpt-3.5-turbo-16k', - 'gpt-3.5-turbo-1106', - 'gpt-3.5-turbo-0125', - 'gpt-4', - 'gpt-4-32k', - 'gpt-4-1106-preview', - 'gpt-4-0125-preview', - 'gpt-4-turbo', - 'gpt-4-turbo-2024-04-09', - 'gpt-4o', - 'gpt-4o-2024-05-13', - 'gpt-4o-2024-08-06', - 'gpt-4o-mini', - 'gpt-4o-mini-2024-07-18', - // 'gpt-3.5-turbo-0301', - // 'gpt-4-0314', - // 'gpt-4-32k-0314', -]; - export const defaultApiVersion = '2024-04-01-preview'; export const defaultModel = 'gpt-4o-mini'; -export const modelMaxToken: { [key: string]: number } = { - 'gpt-3.5-turbo': 4096, - 'gpt-3.5-turbo-0301': 4096, - 'gpt-3.5-turbo-0613': 4096, - 'gpt-3.5-turbo-16k': 16384, - 'gpt-3.5-turbo-16k-0613': 16384, - 'gpt-3.5-turbo-1106': 16384, - 'gpt-3.5-turbo-0125': 16384, - 'gpt-4': 8192, - 'gpt-4-0314': 8192, - 'gpt-4-0613': 8192, - 'gpt-4-32k': 32768, - 'gpt-4-32k-0314': 32768, - 'gpt-4-32k-0613': 32768, - 'gpt-4-1106-preview': 128000, - 'gpt-4-0125-preview': 128000, - 'gpt-4-turbo': 128000, - 'gpt-4-turbo-2024-04-09': 128000, - 'gpt-4o': 128000, - 'gpt-4o-2024-05-13': 128000, - 'gpt-4o-2024-08-06': 128000, - 'gpt-4o-mini': 128000, - 'gpt-4o-mini-2024-07-18': 128000, -}; - -export const modelCost: ModelCost = { - 'gpt-3.5-turbo': { - prompt: { price: 0.0015, unit: 1000 }, - completion: { price: 0.002, unit: 1000 }, - }, - 'gpt-3.5-turbo-0301': { - prompt: { price: 0.0015, unit: 1000 }, - completion: { price: 0.002, unit: 1000 }, - }, - 'gpt-3.5-turbo-0613': { - prompt: { price: 0.0015, unit: 1000 }, - completion: { price: 0.002, unit: 1000 }, - }, - 'gpt-3.5-turbo-16k': { - prompt: { price: 0.003, unit: 1000 }, - completion: { price: 0.004, unit: 1000 }, - }, - 'gpt-3.5-turbo-16k-0613': { - prompt: { price: 0.003, unit: 1000 }, - completion: { price: 0.004, unit: 1000 }, - }, - 'gpt-3.5-turbo-1106': { - prompt: { price: 0.001, unit: 1000 }, - completion: { price: 0.0015, unit: 1000 }, - }, - 'gpt-3.5-turbo-0125': { - prompt: { price: 0.0005, unit: 1000 }, - completion: { price: 0.0015, unit: 1000 }, - }, - 'gpt-4': { - prompt: { price: 0.03, unit: 1000 }, - completion: { price: 0.06, unit: 1000 }, - }, - 'gpt-4-0314': { - prompt: { price: 0.03, unit: 1000 }, - completion: { price: 0.06, unit: 1000 }, - }, - 'gpt-4-0613': { - prompt: { price: 0.03, unit: 1000 }, - completion: { price: 0.06, unit: 1000 }, - }, - 'gpt-4-32k': { - prompt: { price: 0.06, unit: 1000 }, - completion: { price: 0.12, unit: 1000 }, - }, - 'gpt-4-32k-0314': { - prompt: { price: 0.06, unit: 1000 }, - completion: { price: 0.12, unit: 1000 }, - }, - 'gpt-4-32k-0613': { - prompt: { price: 0.06, unit: 1000 }, - completion: { price: 0.12, unit: 1000 }, - }, - 'gpt-4-1106-preview': { - prompt: { price: 0.01, unit: 1000 }, - completion: { price: 0.03, unit: 1000 }, - }, - 'gpt-4-0125-preview': { - prompt: { price: 0.01, unit: 1000 }, - completion: { price: 0.03, unit: 1000 }, - }, - 'gpt-4-turbo': { - prompt: { price: 0.01, unit: 1000 }, - completion: { price: 0.03, unit: 1000 }, - }, - 'gpt-4-turbo-2024-04-09': { - prompt: { price: 0.01, unit: 1000 }, - completion: { price: 0.03, unit: 1000 }, - }, - 'gpt-4o': { - prompt: { price: 0.005, unit: 1000 }, - completion: { price: 0.015, unit: 1000 }, - }, - 'gpt-4o-2024-05-13': { - prompt: { price: 0.005, unit: 1000 }, - completion: { price: 0.015, unit: 1000 }, - }, - 'gpt-4o-2024-08-06': { - prompt: { price: 0.0025, unit: 1000 }, - completion: { price: 0.01, unit: 1000 }, - }, - 'gpt-4o-mini': { - prompt: { price: 0.00015, unit: 1000 }, - completion: { price: 0.0006, unit: 1000 }, - }, - 'gpt-4o-mini-2024-07-18': { - prompt: { price: 0.00015, unit: 1000 }, - completion: { price: 0.0006, unit: 1000 }, - }, -}; - export const defaultUserMaxToken = 4000; export const _defaultChatConfig: ConfigInterface = { @@ -198,6 +59,7 @@ export const generateDefaultChat = ( config: { ...useStore.getState().defaultChatConfig }, titleSet: false, folder, + imageDetail: useStore.getState().defaultImageDetail, }); export const codeLanguageSubset = [ @@ -238,14 +100,6 @@ export const codeLanguageSubset = [ 'yaml', ]; -export const modelTypes: { [key: string]: string } = { - 'gpt-4o-mini-2024-07-18': 'image', - 'gpt-4o-mini': 'image', - 'gpt-4o': 'image', - 'gpt-4o-2024-05-13': 'image', - 'gpt-4o-2024-08-06': 'image', - 'gpt-4-vision-preview': 'image', -}; - export const _defaultMenuWidth = 260; export const _defaultDisplayChatSize = false; +export const _defaultImageDetail : ImageDetail = 'auto' \ No newline at end of file diff --git a/src/constants/modelLoader.ts b/src/constants/modelLoader.ts new file mode 100644 index 000000000..444278864 --- /dev/null +++ b/src/constants/modelLoader.ts @@ -0,0 +1,19 @@ +import { ModelCost } from '@type/chat'; +import { loadModels } from '@utils/modelReader'; + +let modelOptions: string[] = []; +let modelMaxToken: { [key: string]: number } = {}; +let modelCost: ModelCost = {}; +let modelTypes: { [key: string]: string } = {}; + +const initializeModels = async () => { + const models = await loadModels(); + modelOptions = models.modelOptions; + modelMaxToken = models.modelMaxToken; + modelCost = models.modelCost; + modelTypes = models.modelTypes; +}; + +initializeModels(); + +export { modelOptions, modelMaxToken, modelCost, modelTypes }; \ No newline at end of file diff --git a/src/data/models.json b/src/data/models.json new file mode 100644 index 000000000..d9a1c4a40 --- /dev/null +++ b/src/data/models.json @@ -0,0 +1 @@ +{"data":[{"id":"perplexity/llama-3.1-sonar-huge-128k-online","name":"Perplexity: Llama 3.1 Sonar 405B Online","created":1723593600,"description":"Llama 3.1 Sonar is Perplexity's latest model family. It surpasses their earlier Sonar models in cost-efficiency, speed, and performance. The model is built upon the Llama 3.1 405B and has internet access.","pricing":{"prompt":"0.000005","completion":"0.000005","image":"0","request":"0.005"},"context_length":127072,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":null},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"openai/chatgpt-4o-latest","name":"OpenAI: ChatGPT-4o","created":1723593600,"description":"Dynamic model continuously updated to the current version of [GPT-4o](/models/openai/gpt-4o) in ChatGPT. Intended for research and evaluation.\n\nNote: This model is experimental and not suited for production use-cases. It may be removed or redirected to another model in the future.","pricing":{"prompt":"0.000005","completion":"0.000015","image":"0.007225","request":"0"},"context_length":128000,"architecture":{"modality":"text+image->text","tokenizer":"GPT","instruct_type":null},"top_provider":{"max_completion_tokens":16384,"is_moderated":true},"per_request_limits":null},{"id":"sao10k/l3-lunaris-8b","name":"Llama 3 8B Lunaris","created":1723507200,"description":"Lunaris 8B is a versatile generalist and roleplaying model based on Llama 3. It's a strategic merge of multiple models, designed to balance creativity with improved logic and general knowledge.\n\nCreated by [Sao10k](https://huggingface.co/Sao10k), this model aims to offer an improved experience over Stheno v3.2, with enhanced creativity and logical reasoning.\n\nFor best results, use with Llama 3 Instruct context template, temperature 1.4, and min_p 0.1.","pricing":{"prompt":"0.000002","completion":"0.000002","image":"0","request":"0"},"context_length":8192,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":"llama3"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"aetherwiing/mn-starcannon-12b","name":"Mistral Nemo 12B Starcannon","created":1723507200,"description":"Starcannon 12B is a creative roleplay and story writing model, using [nothingiisreal/mn-celeste-12b](https://openrouter.ai/models/nothingiisreal/mn-celeste-12b) as a base and [intervitens/mini-magnum-12b-v1.1](https://huggingface.co/intervitens/mini-magnum-12b-v1.1) merged in using the [TIES](https://arxiv.org/abs/2306.01708) method.\n\nAlthough more similar to Magnum overall, the model remains very creative, with a pleasant writing style. It is recommended for people wanting more variety than Magnum, and yet more verbose prose than Celeste.","pricing":{"prompt":"0.000002","completion":"0.000002","image":"0","request":"0"},"context_length":12000,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"chatml"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"openai/gpt-4o-2024-08-06","name":"OpenAI: GPT-4o (2024-08-06)","created":1722902400,"description":"The 2024-08-06 version of GPT-4o offers improved performance in structured outputs, with the ability to supply a JSON schema in the respone_format. Read more [here](https://openai.com/index/introducing-structured-outputs-in-the-api/).\n\nGPT-4o (\"o\" for \"omni\") is OpenAI's latest AI model, supporting both text and image inputs with text outputs. It maintains the intelligence level of [GPT-4 Turbo](/models/openai/gpt-4-turbo) while being twice as fast and 50% more cost-effective. GPT-4o also offers improved performance in processing non-English languages and enhanced visual capabilities.\n\nFor benchmarking against other models, it was briefly called [\"im-also-a-good-gpt2-chatbot\"](https://twitter.com/LiamFedus/status/1790064963966370209)","pricing":{"prompt":"0.0000025","completion":"0.00001","image":"0.0036125","request":"0"},"context_length":128000,"architecture":{"modality":"text+image->text","tokenizer":"GPT","instruct_type":null},"top_provider":{"max_completion_tokens":16384,"is_moderated":true},"per_request_limits":null},{"id":"meta-llama/llama-3.1-405b","name":"Meta: Llama 3.1 405B (base)","created":1722556800,"description":"Meta's latest class of model (Llama 3.1) launched with a variety of sizes & flavors. This is the base 405B pre-trained version.\n\nIt has demonstrated strong performance compared to leading closed-source models in human evaluations.\n\nTo read more about the model release, [click here](https://ai.meta.com/blog/meta-llama-3/). Usage of this model is subject to [Meta's Acceptable Use Policy](https://llama.meta.com/llama3/use-policy/).","pricing":{"prompt":"0.000002","completion":"0.000002","image":"0","request":"0"},"context_length":131072,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":"none"},"top_provider":{"max_completion_tokens":8192,"is_moderated":false},"per_request_limits":null},{"id":"01-ai/yi-vision","name":"01.AI: Yi Vision","created":1722556800,"description":"The Yi Vision is a complex visual task models provide high-performance understanding and analysis capabilities based on multiple images.\n\nIt's ideal for scenarios that require analysis and interpretation of images and charts, such as image question answering, chart understanding, OCR, visual reasoning, education, research report understanding, or multilingual document reading.","pricing":{"prompt":"0.00000019","completion":"0.00000019","image":"0","request":"0"},"context_length":16384,"architecture":{"modality":"text+image->text","tokenizer":"Yi","instruct_type":null},"top_provider":{"max_completion_tokens":2700,"is_moderated":false},"per_request_limits":null},{"id":"01-ai/yi-large-fc","name":"01.AI: Yi Large FC","created":1722556800,"description":"The Yi Large Function Calling (FC) is a specialized model with capability of tool use. The model can decide whether to call the tool based on the tool definition passed in by the user, and the calling method will be generate in the specified format.\n\nIt's applicable to various production scenarios that require building agents or workflows.","pricing":{"prompt":"0.000003","completion":"0.000003","image":"0","request":"0"},"context_length":16384,"architecture":{"modality":"text->text","tokenizer":"Yi","instruct_type":null},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"01-ai/yi-large-turbo","name":"01.AI: Yi Large Turbo","created":1722556800,"description":"The Yi Large Turbo model is a High Performance and Cost-Effectiveness model offering powerful capabilities at a competitive price.\n\nIt's ideal for a wide range of scenarios, including complex inference and high-quality text generation.\n\nCheck out the [launch announcement](https://01-ai.github.io/blog/01.ai-yi-large-llm-launch) to learn more.","pricing":{"prompt":"0.00000019","completion":"0.00000019","image":"0","request":"0"},"context_length":4096,"architecture":{"modality":"text->text","tokenizer":"Yi","instruct_type":null},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"nothingiisreal/mn-celeste-12b","name":"Mistral Nemo 12B Celeste","created":1722556800,"description":"A specialized story writing and roleplaying model based on Mistral's NeMo 12B Instruct. Fine-tuned on curated datasets including Reddit Writing Prompts and Opus Instruct 25K.\n\nThis model excels at creative writing, offering improved NSFW capabilities, with smarter and more active narration. It demonstrates remarkable versatility in both SFW and NSFW scenarios, with strong Out of Character (OOC) steering capabilities, allowing fine-tuned control over narrative direction and character behavior.\n\nCheck out the model's [HuggingFace page](https://huggingface.co/nothingiisreal/MN-12B-Celeste-V1.9) for details on what parameters and prompts work best!","pricing":{"prompt":"0.0000015","completion":"0.0000015","image":"0","request":"0"},"context_length":32000,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"chatml"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"google/gemini-pro-1.5-exp","name":"Google: Gemini Pro 1.5 (0801)","created":1722470400,"description":"Gemini 1.5 Pro (0801) is an experimental version of the [Gemini 1.5 Pro](/models/google/gemini-pro-1.5) model. Because it's currently experimental, it will be **heavily rate-limited** by Google.\n\nUsage of Gemini is subject to Google's [Gemini Terms of Use](https://ai.google.dev/terms).\n\n#multimodal","pricing":{"prompt":"0.0000025","completion":"0.0000075","image":"0.00263","request":"0"},"context_length":4000000,"architecture":{"modality":"text+image->text","tokenizer":"Gemini","instruct_type":null},"top_provider":{"max_completion_tokens":32768,"is_moderated":false},"per_request_limits":null},{"id":"perplexity/llama-3.1-sonar-large-128k-online","name":"Perplexity: Llama 3.1 Sonar 70B Online","created":1722470400,"description":"Llama 3.1 Sonar is Perplexity's latest model family. It surpasses their earlier Sonar models in cost-efficiency, speed, and performance.\n\nThis is the online version of the [offline chat model](/models/perplexity/llama-3.1-sonar-large-128k-chat). It is focused on delivering helpful, up-to-date, and factual responses. #online","pricing":{"prompt":"0.000001","completion":"0.000001","image":"0","request":"0.005"},"context_length":127072,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":null},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"perplexity/llama-3.1-sonar-large-128k-chat","name":"Perplexity: Llama 3.1 Sonar 70B","created":1722470400,"description":"Llama 3.1 Sonar is Perplexity's latest model family. It surpasses their earlier Sonar models in cost-efficiency, speed, and performance.\n\nThis is a normal offline LLM, but the [online version](/models/perplexity/llama-3.1-sonar-large-128k-online) of this model has Internet access.","pricing":{"prompt":"0.000001","completion":"0.000001","image":"0","request":"0"},"context_length":131072,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":null},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"perplexity/llama-3.1-sonar-small-128k-online","name":"Perplexity: Llama 3.1 Sonar 8B Online","created":1722470400,"description":"Llama 3.1 Sonar is Perplexity's latest model family. It surpasses their earlier Sonar models in cost-efficiency, speed, and performance.\n\nThis is the online version of the [offline chat model](/models/perplexity/llama-3.1-sonar-small-128k-chat). It is focused on delivering helpful, up-to-date, and factual responses. #online","pricing":{"prompt":"0.0000002","completion":"0.0000002","image":"0","request":"0.005"},"context_length":127072,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":null},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"perplexity/llama-3.1-sonar-small-128k-chat","name":"Perplexity: Llama 3.1 Sonar 8B","created":1722470400,"description":"Llama 3.1 Sonar is Perplexity's latest model family. It surpasses their earlier Sonar models in cost-efficiency, speed, and performance.\n\nThis is a normal offline LLM, but the [online version](/models/perplexity/llama-3.1-sonar-small-128k-online) of this model has Internet access.","pricing":{"prompt":"0.0000002","completion":"0.0000002","image":"0","request":"0"},"context_length":131072,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":null},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"meta-llama/llama-3.1-70b-instruct","name":"Meta: Llama 3.1 70B Instruct","created":1721692800,"description":"Meta's latest class of model (Llama 3.1) launched with a variety of sizes & flavors. This 70B instruct-tuned version is optimized for high quality dialogue usecases.\n\nIt has demonstrated strong performance compared to leading closed-source models in human evaluations.\n\nTo read more about the model release, [click here](https://ai.meta.com/blog/meta-llama-3-1/). Usage of this model is subject to [Meta's Acceptable Use Policy](https://llama.meta.com/llama3/use-policy/).","pricing":{"prompt":"0.0000004","completion":"0.0000004","image":"0","request":"0"},"context_length":131072,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":"llama3"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"meta-llama/llama-3.1-8b-instruct:free","name":"Meta: Llama 3.1 8B Instruct (free)","created":1721692800,"description":"Meta's latest class of model (Llama 3.1) launched with a variety of sizes & flavors. This 8B instruct-tuned version is fast and efficient.\n\nIt has demonstrated strong performance compared to leading closed-source models in human evaluations.\n\nTo read more about the model release, [click here](https://ai.meta.com/blog/meta-llama-3-1/). Usage of this model is subject to [Meta's Acceptable Use Policy](https://llama.meta.com/llama3/use-policy/).\n\n_These are free, rate-limited endpoints for [Llama 3.1 8B Instruct](/models/meta-llama/llama-3.1-8b-instruct). Outputs may be cached. Read about rate limits [here](/docs/limits)._","pricing":{"prompt":"0","completion":"0","image":"0","request":"0"},"context_length":131072,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":"llama3"},"top_provider":{"max_completion_tokens":4096,"is_moderated":false},"per_request_limits":null},{"id":"meta-llama/llama-3.1-8b-instruct","name":"Meta: Llama 3.1 8B Instruct","created":1721692800,"description":"Meta's latest class of model (Llama 3.1) launched with a variety of sizes & flavors. This 8B instruct-tuned version is fast and efficient.\n\nIt has demonstrated strong performance compared to leading closed-source models in human evaluations.\n\nTo read more about the model release, [click here](https://ai.meta.com/blog/meta-llama-3-1/). Usage of this model is subject to [Meta's Acceptable Use Policy](https://llama.meta.com/llama3/use-policy/).","pricing":{"prompt":"0.00000006","completion":"0.00000006","image":"0","request":"0"},"context_length":131072,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":"llama3"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"meta-llama/llama-3.1-405b-instruct","name":"Meta: Llama 3.1 405B Instruct","created":1721692800,"description":"The highly anticipated 400B class of Llama3 is here! Clocking in at 128k context with impressive eval scores, the Meta AI team continues to push the frontier of open-source LLMs.\n\nMeta's latest class of model (Llama 3.1) launched with a variety of sizes & flavors. This 405B instruct-tuned version is optimized for high quality dialogue usecases.\n\nIt has demonstrated strong performance compared to leading closed-source models including GPT-4o and Claude 3.5 Sonnet in evaluations.\n\nTo read more about the model release, [click here](https://ai.meta.com/blog/meta-llama-3-1/). Usage of this model is subject to [Meta's Acceptable Use Policy](https://llama.meta.com/llama3/use-policy/).","pricing":{"prompt":"0.0000027","completion":"0.0000027","image":"0","request":"0"},"context_length":131072,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":"llama3"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"cognitivecomputations/dolphin-llama-3-70b","name":"Dolphin Llama 3 70B 🐬","created":1721347200,"description":"Dolphin 2.9 is designed for instruction following, conversational, and coding. This model is a fine-tune of [Llama 3 70B](/models/meta-llama/llama-3-70b-instruct). It demonstrates improvements in instruction, conversation, coding, and function calling abilities, when compared to the original.\n\nUncensored and is stripped of alignment and bias, it requires an external alignment layer for ethical use. Users are cautioned to use this highly compliant model responsibly, as detailed in a blog post about uncensored models at [erichartford.com/uncensored-models](https://erichartford.com/uncensored-models).\n\nUsage of this model is subject to [Meta's Acceptable Use Policy](https://llama.meta.com/llama3/use-policy/).","pricing":{"prompt":"0.00000059","completion":"0.00000079","image":"0","request":"0"},"context_length":8192,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":"chatml"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"mistralai/codestral-mamba","name":"Mistral: Codestral Mamba","created":1721347200,"description":"A 7.3B parameter Mamba-based model designed for code and reasoning tasks.\n\n- Linear time inference, allowing for theoretically infinite sequence lengths\n- 256k token context window\n- Optimized for quick responses, especially beneficial for code productivity\n- Performs comparably to state-of-the-art transformer models in code and reasoning tasks\n- Available under the Apache 2.0 license for free use, modification, and distribution","pricing":{"prompt":"0.00000025","completion":"0.00000025","image":"0","request":"0"},"context_length":256000,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"mistral"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"mistralai/mistral-nemo","name":"Mistral: Mistral Nemo","created":1721347200,"description":"A 12B parameter model with a 128k token context length built by Mistral in collaboration with NVIDIA.\n\nThe model is multilingual, supporting English, French, German, Spanish, Italian, Portuguese, Chinese, Japanese, Korean, Arabic, and Hindi.\n\nIt supports function calling and is released under the Apache 2.0 license.","pricing":{"prompt":"0.00000017","completion":"0.00000017","image":"0","request":"0"},"context_length":128000,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"mistral"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"openai/gpt-4o-mini-2024-07-18","name":"OpenAI: GPT-4o-mini (2024-07-18)","created":1721260800,"description":"GPT-4o mini is OpenAI's newest model after [GPT-4 Omni](/models/openai/gpt-4o), supporting both text and image inputs with text outputs.\n\nAs their most advanced small model, it is many multiples more affordable than other recent frontier models, and more than 60% cheaper than [GPT-3.5 Turbo](/models/openai/gpt-3.5-turbo). It maintains SOTA intelligence, while being significantly more cost-effective.\n\nGPT-4o mini achieves an 82% score on MMLU and presently ranks higher than GPT-4 on chat preferences [common leaderboards](https://arena.lmsys.org/).\n\nCheck out the [launch announcement](https://openai.com/index/gpt-4o-mini-advancing-cost-efficient-intelligence/) to learn more.\n\n#multimodal","pricing":{"prompt":"0.00000015","completion":"0.0000006","image":"0.007225","request":"0"},"context_length":128000,"architecture":{"modality":"text+image->text","tokenizer":"GPT","instruct_type":null},"top_provider":{"max_completion_tokens":16384,"is_moderated":true},"per_request_limits":null},{"id":"openai/gpt-4o-mini","name":"OpenAI: GPT-4o-mini","created":1721260800,"description":"GPT-4o mini is OpenAI's newest model after [GPT-4 Omni](/models/openai/gpt-4o), supporting both text and image inputs with text outputs.\n\nAs their most advanced small model, it is many multiples more affordable than other recent frontier models, and more than 60% cheaper than [GPT-3.5 Turbo](/models/openai/gpt-3.5-turbo). It maintains SOTA intelligence, while being significantly more cost-effective.\n\nGPT-4o mini achieves an 82% score on MMLU and presently ranks higher than GPT-4 on chat preferences [common leaderboards](https://arena.lmsys.org/).\n\nCheck out the [launch announcement](https://openai.com/index/gpt-4o-mini-advancing-cost-efficient-intelligence/) to learn more.\n\n#multimodal","pricing":{"prompt":"0.00000015","completion":"0.0000006","image":"0.007225","request":"0"},"context_length":128000,"architecture":{"modality":"text+image->text","tokenizer":"GPT","instruct_type":null},"top_provider":{"max_completion_tokens":16384,"is_moderated":true},"per_request_limits":null},{"id":"qwen/qwen-2-7b-instruct:free","name":"Qwen 2 7B Instruct (free)","created":1721088000,"description":"Qwen2 7B is a transformer-based model that excels in language understanding, multilingual capabilities, coding, mathematics, and reasoning.\n\nIt features SwiGLU activation, attention QKV bias, and group query attention. It is pretrained on extensive data with supervised finetuning and direct preference optimization.\n\nFor more details, see this [blog post](https://qwenlm.github.io/blog/qwen2/) and [GitHub repo](https://github.com/QwenLM/Qwen2).\n\nUsage of this model is subject to [Tongyi Qianwen LICENSE AGREEMENT](https://huggingface.co/Qwen/Qwen1.5-110B-Chat/blob/main/LICENSE).\n\n_These are free, rate-limited endpoints for [Qwen 2 7B Instruct](/models/qwen/qwen-2-7b-instruct). Outputs may be cached. Read about rate limits [here](/docs/limits)._","pricing":{"prompt":"0","completion":"0","image":"0","request":"0"},"context_length":32768,"architecture":{"modality":"text->text","tokenizer":"Qwen","instruct_type":"chatml"},"top_provider":{"max_completion_tokens":4096,"is_moderated":false},"per_request_limits":null},{"id":"qwen/qwen-2-7b-instruct","name":"Qwen 2 7B Instruct","created":1721088000,"description":"Qwen2 7B is a transformer-based model that excels in language understanding, multilingual capabilities, coding, mathematics, and reasoning.\n\nIt features SwiGLU activation, attention QKV bias, and group query attention. It is pretrained on extensive data with supervised finetuning and direct preference optimization.\n\nFor more details, see this [blog post](https://qwenlm.github.io/blog/qwen2/) and [GitHub repo](https://github.com/QwenLM/Qwen2).\n\nUsage of this model is subject to [Tongyi Qianwen LICENSE AGREEMENT](https://huggingface.co/Qwen/Qwen1.5-110B-Chat/blob/main/LICENSE).","pricing":{"prompt":"0.00000007","completion":"0.00000007","image":"0","request":"0"},"context_length":32768,"architecture":{"modality":"text->text","tokenizer":"Qwen","instruct_type":"chatml"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"google/gemma-2-27b-it","name":"Google: Gemma 2 27B","created":1720828800,"description":"Gemma 2 27B by Google is an open model built from the same research and technology used to create the [Gemini models](/models?q=gemini).\n\nGemma models are well-suited for a variety of text generation tasks, including question answering, summarization, and reasoning.\n\nSee the [launch announcement](https://blog.google/technology/developers/google-gemma-2/) for more details. Usage of Gemma is subject to Google's [Gemma Terms of Use](https://ai.google.dev/gemma/terms).","pricing":{"prompt":"0.00000027","completion":"0.00000027","image":"0","request":"0"},"context_length":8192,"architecture":{"modality":"text->text","tokenizer":"Gemini","instruct_type":"gemma"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"alpindale/magnum-72b","name":"Magnum 72B","created":1720656000,"description":"From the maker of [Goliath](https://openrouter.ai/models/alpindale/goliath-120b), Magnum 72B is the first in a new family of models designed to achieve the prose quality of the Claude 3 models, notably Opus & Sonnet.\n\nThe model is based on [Qwen2 72B](https://openrouter.ai/models/qwen/qwen-2-72b-instruct) and trained with 55 million tokens of highly curated roleplay (RP) data.","pricing":{"prompt":"0.00000375","completion":"0.0000045","image":"0","request":"0"},"context_length":16384,"architecture":{"modality":"text->text","tokenizer":"Qwen","instruct_type":"chatml"},"top_provider":{"max_completion_tokens":1024,"is_moderated":false},"per_request_limits":null},{"id":"nousresearch/hermes-2-theta-llama-3-8b","name":"Nous: Hermes 2 Theta 8B","created":1720656000,"description":"An experimental merge model based on Llama 3, exhibiting a very distinctive style of writing. It combines the the best of [Meta's Llama 3 8B](https://openrouter.ai/models/meta-llama/llama-3-8b-instruct) and Nous Research's [Hermes 2 Pro](https://openrouter.ai/models/nousresearch/hermes-2-pro-llama-3-8b).\n\nHermes-2 Θ (theta) was specifically designed with a few capabilities in mind: executing function calls, generating JSON output, and most remarkably, demonstrating metacognitive abilities (contemplating the nature of thought and recognizing the diversity of cognitive processes among individuals).","pricing":{"prompt":"0.0000001875","completion":"0.000001125","image":"0","request":"0"},"context_length":16384,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":"chatml"},"top_provider":{"max_completion_tokens":2048,"is_moderated":false},"per_request_limits":null},{"id":"google/gemma-2-9b-it:free","name":"Google: Gemma 2 9B (free)","created":1719532800,"description":"Gemma 2 9B by Google is an advanced, open-source language model that sets a new standard for efficiency and performance in its size class.\n\nDesigned for a wide variety of tasks, it empowers developers and researchers to build innovative applications, while maintaining accessibility, safety, and cost-effectiveness.\n\nSee the [launch announcement](https://blog.google/technology/developers/google-gemma-2/) for more details. Usage of Gemma is subject to Google's [Gemma Terms of Use](https://ai.google.dev/gemma/terms).\n\n_These are free, rate-limited endpoints for [Gemma 2 9B](/models/google/gemma-2-9b-it). Outputs may be cached. Read about rate limits [here](/docs/limits)._","pricing":{"prompt":"0","completion":"0","image":"0","request":"0"},"context_length":8192,"architecture":{"modality":"text->text","tokenizer":"Gemini","instruct_type":"gemma"},"top_provider":{"max_completion_tokens":2048,"is_moderated":false},"per_request_limits":null},{"id":"google/gemma-2-9b-it","name":"Google: Gemma 2 9B","created":1719532800,"description":"Gemma 2 9B by Google is an advanced, open-source language model that sets a new standard for efficiency and performance in its size class.\n\nDesigned for a wide variety of tasks, it empowers developers and researchers to build innovative applications, while maintaining accessibility, safety, and cost-effectiveness.\n\nSee the [launch announcement](https://blog.google/technology/developers/google-gemma-2/) for more details. Usage of Gemma is subject to Google's [Gemma Terms of Use](https://ai.google.dev/gemma/terms).","pricing":{"prompt":"0.00000008","completion":"0.00000008","image":"0","request":"0"},"context_length":8192,"architecture":{"modality":"text->text","tokenizer":"Gemini","instruct_type":"gemma"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"openrouter/flavor-of-the-week","name":"Flavor of The Week","created":1719446400,"description":"This is a router model that rotates its underlying model weekly. It aims to be a simple way to explore the capabilities of new models while using the same model ID.\n\nThe current underlying model is [Llama 3 Stheno 8B v3.3 32K](/models/sao10k/l3-stheno-8b).\n\nNOTE: Pricing depends on the underlying model as well as the provider routed to. To see which model and provider were used, visit [Activity](/activity).","pricing":{"prompt":"-1","completion":"-1","request":"-1","image":"-1"},"context_length":32000,"architecture":{"modality":"text->text","tokenizer":"Router","instruct_type":"llama3"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"sao10k/l3-stheno-8b","name":"Llama 3 Stheno 8B v3.3 32K","created":1719446400,"description":"Stheno 8B 32K is a creative writing/roleplay model from [Sao10k](https://ko-fi.com/sao10k). It was trained at 8K context, then expanded to 32K context.\n\nCompared to older Stheno version, this model is trained on:\n- 2x the amount of creative writing samples\n- Cleaned up roleplaying samples\n- Fewer low quality samples","pricing":{"prompt":"0.00000025","completion":"0.0000015","image":"0","request":"0"},"context_length":32000,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":"llama3"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"ai21/jamba-instruct","name":"AI21: Jamba Instruct","created":1719273600,"description":"The Jamba-Instruct model, introduced by AI21 Labs, is an instruction-tuned variant of their hybrid SSM-Transformer Jamba model, specifically optimized for enterprise applications.\n\n- 256K Context Window: It can process extensive information, equivalent to a 400-page novel, which is beneficial for tasks involving large documents such as financial reports or legal documents\n- Safety and Accuracy: Jamba-Instruct is designed with enhanced safety features to ensure secure deployment in enterprise environments, reducing the risk and cost of implementation\n\nRead their [announcement](https://www.ai21.com/blog/announcing-jamba) to learn more.\n\nJamba has a knowledge cutoff of February 2024.","pricing":{"prompt":"0.0000005","completion":"0.0000007","image":"0","request":"0"},"context_length":256000,"architecture":{"modality":"text->text","tokenizer":"Other","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":false},"per_request_limits":null},{"id":"01-ai/yi-large","name":"01.AI: Yi Large","created":1719273600,"description":"The Yi Large model was designed by 01.AI with the following usecases in mind: knowledge search, data classification, human-like chat bots, and customer service.\n\nIt stands out for its multilingual proficiency, particularly in Spanish, Chinese, Japanese, German, and French.\n\nCheck out the [launch announcement](https://01-ai.github.io/blog/01.ai-yi-large-llm-launch) to learn more.","pricing":{"prompt":"0.000003","completion":"0.000003","image":"0","request":"0"},"context_length":32768,"architecture":{"modality":"text->text","tokenizer":"Yi","instruct_type":null},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"anthropic/claude-3.5-sonnet","name":"Anthropic: Claude 3.5 Sonnet","created":1718841600,"description":"Claude 3.5 Sonnet delivers better-than-Opus capabilities, faster-than-Sonnet speeds, at the same Sonnet prices. Sonnet is particularly good at:\n\n- Coding: Autonomously writes, edits, and runs code with reasoning and troubleshooting\n- Data science: Augments human data science expertise; navigates unstructured data while using multiple tools for insights\n- Visual processing: excelling at interpreting charts, graphs, and images, accurately transcribing text to derive insights beyond just the text alone\n- Agentic tasks: exceptional tool use, making it great at agentic tasks (i.e. complex, multi-step problem solving tasks that require engaging with other systems)\n\n#multimodal","pricing":{"prompt":"0.000003","completion":"0.000015","image":"0.0048","request":"0"},"context_length":200000,"architecture":{"modality":"text+image->text","tokenizer":"Claude","instruct_type":null},"top_provider":{"max_completion_tokens":8192,"is_moderated":true},"per_request_limits":null},{"id":"anthropic/claude-3.5-sonnet:beta","name":"Anthropic: Claude 3.5 Sonnet (self-moderated)","created":1718841600,"description":"Claude 3.5 Sonnet delivers better-than-Opus capabilities, faster-than-Sonnet speeds, at the same Sonnet prices. Sonnet is particularly good at:\n\n- Coding: Autonomously writes, edits, and runs code with reasoning and troubleshooting\n- Data science: Augments human data science expertise; navigates unstructured data while using multiple tools for insights\n- Visual processing: excelling at interpreting charts, graphs, and images, accurately transcribing text to derive insights beyond just the text alone\n- Agentic tasks: exceptional tool use, making it great at agentic tasks (i.e. complex, multi-step problem solving tasks that require engaging with other systems)\n\n#multimodal\n\n_This is a faster endpoint, made available in collaboration with Anthropic, that is self-moderated: response moderation happens on the model's side instead of OpenRouter's. For requests that pass moderation, it's identical to the [Standard](/models/anthropic/claude-3.5-sonnet) variant._","pricing":{"prompt":"0.000003","completion":"0.000015","image":"0.0048","request":"0"},"context_length":200000,"architecture":{"modality":"text+image->text","tokenizer":"Claude","instruct_type":null},"top_provider":{"max_completion_tokens":8192,"is_moderated":false},"per_request_limits":null},{"id":"sao10k/l3-euryale-70b","name":"Llama 3 Euryale 70B v2.1","created":1718668800,"description":"Euryale 70B v2.1 is a model focused on creative roleplay from [Sao10k](https://ko-fi.com/sao10k).\n\n- Better prompt adherence.\n- Better anatomy / spatial awareness.\n- Adapts much better to unique and custom formatting / reply formats.\n- Very creative, lots of unique swipes.\n- Is not restrictive during roleplays.","pricing":{"prompt":"0.00000059","completion":"0.00000079","image":"0","request":"0"},"context_length":8192,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":"llama3"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"microsoft/phi-3-medium-4k-instruct","name":"Phi-3 Medium 4K Instruct","created":1718409600,"description":"Phi-3 4K Medium is a powerful 14-billion parameter model designed for advanced language understanding, reasoning, and instruction following. Optimized through supervised fine-tuning and preference adjustments, it excels in tasks involving common sense, mathematics, logical reasoning, and code processing.\n\nAt time of release, Phi-3 Medium demonstrated state-of-the-art performance among lightweight models. In the MMLU-Pro eval, the model even comes close to a Llama3 70B level of performance.\n\nFor 128k context length, try [Phi-3 Medium 128K](/models/microsoft/phi-3-medium-128k-instruct).","pricing":{"prompt":"0.00000014","completion":"0.00000014","image":"0","request":"0"},"context_length":4000,"architecture":{"modality":"text->text","tokenizer":"Other","instruct_type":"phi3"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"cognitivecomputations/dolphin-mixtral-8x22b","name":"Dolphin 2.9.2 Mixtral 8x22B 🐬","created":1717804800,"description":"Dolphin 2.9 is designed for instruction following, conversational, and coding. This model is a finetune of [Mixtral 8x22B Instruct](/models/mistralai/mixtral-8x22b-instruct). It features a 64k context length and was fine-tuned with a 16k sequence length using ChatML templates.\n\nThis model is a successor to [Dolphin Mixtral 8x7B](/models/cognitivecomputations/dolphin-mixtral-8x7b).\n\nThe model is uncensored and is stripped of alignment and bias. It requires an external alignment layer for ethical use. Users are cautioned to use this highly compliant model responsibly, as detailed in a blog post about uncensored models at [erichartford.com/uncensored-models](https://erichartford.com/uncensored-models).\n\n#moe #uncensored","pricing":{"prompt":"0.0000009","completion":"0.0000009","image":"0","request":"0"},"context_length":65536,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"chatml"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"qwen/qwen-2-72b-instruct","name":"Qwen 2 72B Instruct","created":1717718400,"description":"Qwen2 72B is a transformer-based model that excels in language understanding, multilingual capabilities, coding, mathematics, and reasoning.\n\nIt features SwiGLU activation, attention QKV bias, and group query attention. It is pretrained on extensive data with supervised finetuning and direct preference optimization.\n\nFor more details, see this [blog post](https://qwenlm.github.io/blog/qwen2/) and [GitHub repo](https://github.com/QwenLM/Qwen2).\n\nUsage of this model is subject to [Tongyi Qianwen LICENSE AGREEMENT](https://huggingface.co/Qwen/Qwen1.5-110B-Chat/blob/main/LICENSE).","pricing":{"prompt":"0.00000056","completion":"0.00000077","image":"0","request":"0"},"context_length":32768,"architecture":{"modality":"text->text","tokenizer":"Qwen","instruct_type":"chatml"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"openchat/openchat-8b","name":"OpenChat 3.6 8B","created":1717200000,"description":"OpenChat 8B is a library of open-source language models, fine-tuned with \"C-RLFT (Conditioned Reinforcement Learning Fine-Tuning)\" - a strategy inspired by offline reinforcement learning. It has been trained on mixed-quality data without preference labels.\n\nIt outperforms many similarly sized models including [Llama 3 8B Instruct](/models/meta-llama/llama-3-8b-instruct) and various fine-tuned models. It excels in general conversation, coding assistance, and mathematical reasoning.\n\n- For OpenChat fine-tuned on Mistral 7B, check out [OpenChat 7B](/models/openchat/openchat-7b).\n- For OpenChat fine-tuned on Llama 8B, check out [OpenChat 8B](/models/openchat/openchat-8b).\n\n#open-source","pricing":{"prompt":"0.000000064","completion":"0.000000064","image":"0","request":"0"},"context_length":8192,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":"openchat"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"nousresearch/hermes-2-pro-llama-3-8b","name":"NousResearch: Hermes 2 Pro - Llama-3 8B","created":1716768000,"description":"Hermes 2 Pro is an upgraded, retrained version of Nous Hermes 2, consisting of an updated and cleaned version of the OpenHermes 2.5 Dataset, as well as a newly introduced Function Calling and JSON Mode dataset developed in-house.","pricing":{"prompt":"0.00000014","completion":"0.00000014","image":"0","request":"0"},"context_length":8192,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":"chatml"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"mistralai/mistral-7b-instruct-v0.3","name":"Mistral: Mistral 7B Instruct v0.3","created":1716768000,"description":"A high-performing, industry-standard 7.3B parameter model, with optimizations for speed and context length.\n\nAn improved version of [Mistral 7B Instruct v0.2](/models/mistralai/mistral-7b-instruct-v0.2), with the following changes:\n\n- Extended vocabulary to 32768\n- Supports v3 Tokenizer\n- Supports function calling\n\nNOTE: Support for function calling depends on the provider.","pricing":{"prompt":"0.000000059","completion":"0.000000059","image":"0","request":"0"},"context_length":32768,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"mistral"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"mistralai/mistral-7b-instruct:free","name":"Mistral: Mistral 7B Instruct (free)","created":1716768000,"description":"A high-performing, industry-standard 7.3B parameter model, with optimizations for speed and context length.\n\n*Mistral 7B Instruct has multiple version variants, and this is intended to be the latest version.*\n\n_These are free, rate-limited endpoints for [Mistral 7B Instruct](/models/mistralai/mistral-7b-instruct). Outputs may be cached. Read about rate limits [here](/docs/limits)._","pricing":{"prompt":"0","completion":"0","image":"0","request":"0"},"context_length":32768,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"mistral"},"top_provider":{"max_completion_tokens":4096,"is_moderated":false},"per_request_limits":null},{"id":"mistralai/mistral-7b-instruct","name":"Mistral: Mistral 7B Instruct","created":1716768000,"description":"A high-performing, industry-standard 7.3B parameter model, with optimizations for speed and context length.\n\n*Mistral 7B Instruct has multiple version variants, and this is intended to be the latest version.*","pricing":{"prompt":"0.000000059","completion":"0.000000059","image":"0","request":"0"},"context_length":32768,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"mistral"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"mistralai/mistral-7b-instruct:nitro","name":"Mistral: Mistral 7B Instruct (nitro)","created":1716768000,"description":"A high-performing, industry-standard 7.3B parameter model, with optimizations for speed and context length.\n\n*Mistral 7B Instruct has multiple version variants, and this is intended to be the latest version.*\n\n_These are higher-throughput endpoints for [Mistral 7B Instruct](/models/mistralai/mistral-7b-instruct). They may have higher prices._","pricing":{"prompt":"0.00000007","completion":"0.00000007","image":"0","request":"0"},"context_length":32768,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"mistral"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"microsoft/phi-3-mini-128k-instruct:free","name":"Phi-3 Mini 128K Instruct (free)","created":1716681600,"description":"Phi-3 Mini is a powerful 3.8B parameter model designed for advanced language understanding, reasoning, and instruction following. Optimized through supervised fine-tuning and preference adjustments, it excels in tasks involving common sense, mathematics, logical reasoning, and code processing.\n\nAt time of release, Phi-3 Medium demonstrated state-of-the-art performance among lightweight models. This model is static, trained on an offline dataset with an October 2023 cutoff date.\n\n_These are free, rate-limited endpoints for [Phi-3 Mini 128K Instruct](/models/microsoft/phi-3-mini-128k-instruct). Outputs may be cached. Read about rate limits [here](/docs/limits)._","pricing":{"prompt":"0","completion":"0","image":"0","request":"0"},"context_length":128000,"architecture":{"modality":"text->text","tokenizer":"Other","instruct_type":"phi3"},"top_provider":{"max_completion_tokens":4096,"is_moderated":false},"per_request_limits":null},{"id":"microsoft/phi-3-mini-128k-instruct","name":"Phi-3 Mini 128K Instruct","created":1716681600,"description":"Phi-3 Mini is a powerful 3.8B parameter model designed for advanced language understanding, reasoning, and instruction following. Optimized through supervised fine-tuning and preference adjustments, it excels in tasks involving common sense, mathematics, logical reasoning, and code processing.\n\nAt time of release, Phi-3 Medium demonstrated state-of-the-art performance among lightweight models. This model is static, trained on an offline dataset with an October 2023 cutoff date.","pricing":{"prompt":"0.0000001","completion":"0.0000001","image":"0","request":"0"},"context_length":128000,"architecture":{"modality":"text->text","tokenizer":"Other","instruct_type":"phi3"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"microsoft/phi-3-medium-128k-instruct:free","name":"Phi-3 Medium 128K Instruct (free)","created":1716508800,"description":"Phi-3 128K Medium is a powerful 14-billion parameter model designed for advanced language understanding, reasoning, and instruction following. Optimized through supervised fine-tuning and preference adjustments, it excels in tasks involving common sense, mathematics, logical reasoning, and code processing.\n\nAt time of release, Phi-3 Medium demonstrated state-of-the-art performance among lightweight models. In the MMLU-Pro eval, the model even comes close to a Llama3 70B level of performance.\n\nFor 4k context length, try [Phi-3 Medium 4K](/models/microsoft/phi-3-medium-4k-instruct).\n\n_These are free, rate-limited endpoints for [Phi-3 Medium 128K Instruct](/models/microsoft/phi-3-medium-128k-instruct). Outputs may be cached. Read about rate limits [here](/docs/limits)._","pricing":{"prompt":"0","completion":"0","image":"0","request":"0"},"context_length":128000,"architecture":{"modality":"text->text","tokenizer":"Other","instruct_type":"phi3"},"top_provider":{"max_completion_tokens":4096,"is_moderated":false},"per_request_limits":null},{"id":"microsoft/phi-3-medium-128k-instruct","name":"Phi-3 Medium 128K Instruct","created":1716508800,"description":"Phi-3 128K Medium is a powerful 14-billion parameter model designed for advanced language understanding, reasoning, and instruction following. Optimized through supervised fine-tuning and preference adjustments, it excels in tasks involving common sense, mathematics, logical reasoning, and code processing.\n\nAt time of release, Phi-3 Medium demonstrated state-of-the-art performance among lightweight models. In the MMLU-Pro eval, the model even comes close to a Llama3 70B level of performance.\n\nFor 4k context length, try [Phi-3 Medium 4K](/models/microsoft/phi-3-medium-4k-instruct).","pricing":{"prompt":"0.000001","completion":"0.000001","image":"0","request":"0"},"context_length":128000,"architecture":{"modality":"text->text","tokenizer":"Other","instruct_type":"phi3"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"neversleep/llama-3-lumimaid-70b","name":"Llama 3 Lumimaid 70B","created":1715817600,"description":"The NeverSleep team is back, with a Llama 3 70B finetune trained on their curated roleplay data. Striking a balance between eRP and RP, Lumimaid was designed to be serious, yet uncensored when necessary.\n\nTo enhance it's overall intelligence and chat capability, roughly 40% of the training data was not roleplay. This provides a breadth of knowledge to access, while still keeping roleplay as the primary strength.\n\nUsage of this model is subject to [Meta's Acceptable Use Policy](https://llama.meta.com/llama3/use-policy/).","pricing":{"prompt":"0.000003375","completion":"0.0000045","image":"0","request":"0"},"context_length":8192,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":"llama3"},"top_provider":{"max_completion_tokens":2048,"is_moderated":false},"per_request_limits":null},{"id":"google/gemini-flash-1.5","name":"Google: Gemini Flash 1.5","created":1715644800,"description":"Gemini 1.5 Flash is a foundation model that performs well at a variety of multimodal tasks such as visual understanding, classification, summarization, and creating content from image, audio and video. It's adept at processing visual and text inputs such as photographs, documents, infographics, and screenshots.\n\nGemini 1.5 Flash is designed for high-volume, high-frequency tasks where cost and latency matter. On most common tasks, Flash achieves comparable quality to other Gemini Pro models at a significantly reduced cost. Flash is well-suited for applications like chat assistants and on-demand content generation where speed and scale matter.\n\nUsage of Gemini is subject to Google's [Gemini Terms of Use](https://ai.google.dev/terms).\n\n#multimodal","pricing":{"prompt":"0.0000000375","completion":"0.00000015","image":"0.00004","request":"0"},"context_length":4000000,"architecture":{"modality":"text+image->text","tokenizer":"Gemini","instruct_type":null},"top_provider":{"max_completion_tokens":32768,"is_moderated":false},"per_request_limits":null},{"id":"deepseek/deepseek-coder","name":"DeepSeek-Coder-V2","created":1715644800,"description":"DeepSeek-Coder-V2, an open-source Mixture-of-Experts (MoE) code language model. It is further pre-trained from an intermediate checkpoint of DeepSeek-V2 with additional 6 trillion tokens.\n\nThe original V1 model was trained from scratch on 2T tokens, with a composition of 87% code and 13% natural language in both English and Chinese. It was pre-trained on project-level code corpus by employing a extra fill-in-the-blank task.","pricing":{"prompt":"0.00000014","completion":"0.00000028","image":"0","request":"0"},"context_length":128000,"architecture":{"modality":"text->text","tokenizer":"Other","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":false},"per_request_limits":null},{"id":"deepseek/deepseek-chat","name":"DeepSeek-V2 Chat","created":1715644800,"description":"DeepSeek-V2 Chat is a conversational finetune of DeepSeek-V2, a Mixture-of-Experts (MoE) language model. It comprises 236B total parameters, of which 21B are activated for each token.\n\nCompared with DeepSeek 67B, DeepSeek-V2 achieves stronger performance, and meanwhile saves 42.5% of training costs, reduces the KV cache by 93.3%, and boosts the maximum generation throughput to 5.76 times.\n\nDeepSeek-V2 achieves remarkable performance on both standard benchmarks and open-ended generation evaluations.","pricing":{"prompt":"0.00000014","completion":"0.00000028","image":"0","request":"0"},"context_length":128000,"architecture":{"modality":"text->text","tokenizer":"Other","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":false},"per_request_limits":null},{"id":"perplexity/llama-3-sonar-large-32k-online","name":"Perplexity: Llama3 Sonar 70B Online","created":1715644800,"description":"Llama3 Sonar is Perplexity's latest model family. It surpasses their earlier Sonar models in cost-efficiency, speed, and performance.\n\nThis is the online version of the [offline chat model](/models/perplexity/llama-3-sonar-large-32k-chat). It is focused on delivering helpful, up-to-date, and factual responses. #online","pricing":{"prompt":"0.000001","completion":"0.000001","image":"0","request":"0.005"},"context_length":28000,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":null},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"perplexity/llama-3-sonar-large-32k-chat","name":"Perplexity: Llama3 Sonar 70B","created":1715644800,"description":"Llama3 Sonar is Perplexity's latest model family. It surpasses their earlier Sonar models in cost-efficiency, speed, and performance.\n\nThis is a normal offline LLM, but the [online version](/models/perplexity/llama-3-sonar-large-32k-online) of this model has Internet access.","pricing":{"prompt":"0.000001","completion":"0.000001","image":"0","request":"0"},"context_length":32768,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":null},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"perplexity/llama-3-sonar-small-32k-online","name":"Perplexity: Llama3 Sonar 8B Online","created":1715644800,"description":"Llama3 Sonar is Perplexity's latest model family. It surpasses their earlier Sonar models in cost-efficiency, speed, and performance.\n\nThis is the online version of the [offline chat model](/models/perplexity/llama-3-sonar-small-32k-chat). It is focused on delivering helpful, up-to-date, and factual responses. #online","pricing":{"prompt":"0.0000002","completion":"0.0000002","image":"0","request":"0.005"},"context_length":28000,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":null},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"perplexity/llama-3-sonar-small-32k-chat","name":"Perplexity: Llama3 Sonar 8B","created":1715644800,"description":"Llama3 Sonar is Perplexity's latest model family. It surpasses their earlier Sonar models in cost-efficiency, speed, and performance.\n\nThis is a normal offline LLM, but the [online version](/models/perplexity/llama-3-sonar-small-32k-online) of this model has Internet access.","pricing":{"prompt":"0.0000002","completion":"0.0000002","image":"0","request":"0"},"context_length":32768,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":null},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"meta-llama/llama-guard-2-8b","name":"Meta: LlamaGuard 2 8B","created":1715558400,"description":"This safeguard model has 8B parameters and is based on the Llama 3 family. Just like is predecessor, [LlamaGuard 1](https://huggingface.co/meta-llama/LlamaGuard-7b), it can do both prompt and response classification.\n\nLlamaGuard 2 acts as a normal LLM would, generating text that indicates whether the given input/output is safe/unsafe. If deemed unsafe, it will also share the content categories violated.\n\nFor best results, please use raw prompt input or the `/completions` endpoint, instead of the chat API.\n\nIt has demonstrated strong performance compared to leading closed-source models in human evaluations.\n\nTo read more about the model release, [click here](https://ai.meta.com/blog/meta-llama-3/). Usage of this model is subject to [Meta's Acceptable Use Policy](https://llama.meta.com/llama3/use-policy/).","pricing":{"prompt":"0.00000018","completion":"0.00000018","image":"0","request":"0"},"context_length":8192,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":"none"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"meta-llama/llama-3-70b","name":"Meta: Llama 3 70B (Base)","created":1715558400,"description":"Meta's latest class of model (Llama 3) launched with a variety of sizes & flavors. This is the base 70B pre-trained version.\n\nIt has demonstrated strong performance compared to leading closed-source models in human evaluations.\n\nTo read more about the model release, [click here](https://ai.meta.com/blog/meta-llama-3/). Usage of this model is subject to [Meta's Acceptable Use Policy](https://llama.meta.com/llama3/use-policy/).","pricing":{"prompt":"0.00000081","completion":"0.00000081","image":"0","request":"0"},"context_length":8192,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":"chatml"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"meta-llama/llama-3-8b","name":"Meta: Llama 3 8B (Base)","created":1715558400,"description":"Meta's latest class of model (Llama 3) launched with a variety of sizes & flavors. This is the base 8B pre-trained version.\n\nIt has demonstrated strong performance compared to leading closed-source models in human evaluations.\n\nTo read more about the model release, [click here](https://ai.meta.com/blog/meta-llama-3/). Usage of this model is subject to [Meta's Acceptable Use Policy](https://llama.meta.com/llama3/use-policy/).","pricing":{"prompt":"0.00000018","completion":"0.00000018","image":"0","request":"0"},"context_length":8192,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":"chatml"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"openai/gpt-4o-2024-05-13","name":"OpenAI: GPT-4o (2024-05-13)","created":1715558400,"description":"GPT-4o (\"o\" for \"omni\") is OpenAI's latest AI model, supporting both text and image inputs with text outputs. It maintains the intelligence level of [GPT-4 Turbo](/models/openai/gpt-4-turbo) while being twice as fast and 50% more cost-effective. GPT-4o also offers improved performance in processing non-English languages and enhanced visual capabilities.\n\nFor benchmarking against other models, it was briefly called [\"im-also-a-good-gpt2-chatbot\"](https://twitter.com/LiamFedus/status/1790064963966370209)\n\n#multimodal","pricing":{"prompt":"0.000005","completion":"0.000015","image":"0.007225","request":"0"},"context_length":128000,"architecture":{"modality":"text+image->text","tokenizer":"GPT","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":true},"per_request_limits":null},{"id":"openai/gpt-4o","name":"OpenAI: GPT-4o","created":1715558400,"description":"GPT-4o (\"o\" for \"omni\") is OpenAI's latest AI model, supporting both text and image inputs with text outputs. It maintains the intelligence level of [GPT-4 Turbo](/models/openai/gpt-4-turbo) while being twice as fast and 50% more cost-effective. GPT-4o also offers improved performance in processing non-English languages and enhanced visual capabilities.\n\nFor benchmarking against other models, it was briefly called [\"im-also-a-good-gpt2-chatbot\"](https://twitter.com/LiamFedus/status/1790064963966370209)\n\n#multimodal","pricing":{"prompt":"0.000005","completion":"0.000015","image":"0.007225","request":"0"},"context_length":128000,"architecture":{"modality":"text+image->text","tokenizer":"GPT","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":true},"per_request_limits":null},{"id":"openai/gpt-4o:extended","name":"OpenAI: GPT-4o (extended)","created":1715558400,"description":"GPT-4o (\"o\" for \"omni\") is OpenAI's latest AI model, supporting both text and image inputs with text outputs. It maintains the intelligence level of [GPT-4 Turbo](/models/openai/gpt-4-turbo) while being twice as fast and 50% more cost-effective. GPT-4o also offers improved performance in processing non-English languages and enhanced visual capabilities.\n\nFor benchmarking against other models, it was briefly called [\"im-also-a-good-gpt2-chatbot\"](https://twitter.com/LiamFedus/status/1790064963966370209)\n\n#multimodal\n\n_These are extended-context endpoints for [GPT-4o](/models/openai/gpt-4o). They may have higher prices._","pricing":{"prompt":"0.000006","completion":"0.000018","image":"0.007225","request":"0"},"context_length":128000,"architecture":{"modality":"text+image->text","tokenizer":"GPT","instruct_type":null},"top_provider":{"max_completion_tokens":64000,"is_moderated":false},"per_request_limits":null},{"id":"allenai/olmo-7b-instruct","name":"OLMo 7B Instruct","created":1715299200,"description":"OLMo 7B Instruct by the Allen Institute for AI is a model finetuned for question answering. It demonstrates **notable performance** across multiple benchmarks including TruthfulQA and ToxiGen.\n\n**Open Source**: The model, its code, checkpoints, logs are released under the [Apache 2.0 license](https://choosealicense.com/licenses/apache-2.0).\n\n- [Core repo (training, inference, fine-tuning etc.)](https://github.com/allenai/OLMo)\n- [Evaluation code](https://github.com/allenai/OLMo-Eval)\n- [Further fine-tuning code](https://github.com/allenai/open-instruct)\n- [Paper](https://arxiv.org/abs/2402.00838)\n- [Technical blog post](https://blog.allenai.org/olmo-open-language-model-87ccfc95f580)\n- [W&B Logs](https://wandb.ai/ai2-llm/OLMo-7B/reports/OLMo-7B--Vmlldzo2NzQyMzk5)","pricing":{"prompt":"0.00000018","completion":"0.00000018","image":"0","request":"0"},"context_length":2048,"architecture":{"modality":"text->text","tokenizer":"Other","instruct_type":"zephyr"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"qwen/qwen-4b-chat","name":"Qwen 1.5 4B Chat","created":1715212800,"description":"Qwen1.5 4B is the beta version of Qwen2, a transformer-based decoder-only language model pretrained on a large amount of data. In comparison with the previous released Qwen, the improvements include:\n\n- Significant performance improvement in human preference for chat models\n- Multilingual support of both base and chat models\n- Stable support of 32K context length for models of all sizes\n\nFor more details, see this [blog post](https://qwenlm.github.io/blog/qwen1.5/) and [GitHub repo](https://github.com/QwenLM/Qwen1.5).\n\nUsage of this model is subject to [Tongyi Qianwen LICENSE AGREEMENT](https://huggingface.co/Qwen/Qwen1.5-110B-Chat/blob/main/LICENSE).","pricing":{"prompt":"0.00000009","completion":"0.00000009","image":"0","request":"0"},"context_length":32768,"architecture":{"modality":"text->text","tokenizer":"Qwen","instruct_type":"chatml"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"qwen/qwen-7b-chat","name":"Qwen 1.5 7B Chat","created":1715212800,"description":"Qwen1.5 7B is the beta version of Qwen2, a transformer-based decoder-only language model pretrained on a large amount of data. In comparison with the previous released Qwen, the improvements include:\n\n- Significant performance improvement in human preference for chat models\n- Multilingual support of both base and chat models\n- Stable support of 32K context length for models of all sizes\n\nFor more details, see this [blog post](https://qwenlm.github.io/blog/qwen1.5/) and [GitHub repo](https://github.com/QwenLM/Qwen1.5).\n\nUsage of this model is subject to [Tongyi Qianwen LICENSE AGREEMENT](https://huggingface.co/Qwen/Qwen1.5-110B-Chat/blob/main/LICENSE).","pricing":{"prompt":"0.00000018","completion":"0.00000018","image":"0","request":"0"},"context_length":32768,"architecture":{"modality":"text->text","tokenizer":"Qwen","instruct_type":"chatml"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"qwen/qwen-14b-chat","name":"Qwen 1.5 14B Chat","created":1715212800,"description":"Qwen1.5 14B is the beta version of Qwen2, a transformer-based decoder-only language model pretrained on a large amount of data. In comparison with the previous released Qwen, the improvements include:\n\n- Significant performance improvement in human preference for chat models\n- Multilingual support of both base and chat models\n- Stable support of 32K context length for models of all sizes\n\nFor more details, see this [blog post](https://qwenlm.github.io/blog/qwen1.5/) and [GitHub repo](https://github.com/QwenLM/Qwen1.5).\n\nUsage of this model is subject to [Tongyi Qianwen LICENSE AGREEMENT](https://huggingface.co/Qwen/Qwen1.5-110B-Chat/blob/main/LICENSE).","pricing":{"prompt":"0.00000027","completion":"0.00000027","image":"0","request":"0"},"context_length":32768,"architecture":{"modality":"text->text","tokenizer":"Qwen","instruct_type":"chatml"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"qwen/qwen-32b-chat","name":"Qwen 1.5 32B Chat","created":1715212800,"description":"Qwen1.5 32B is the beta version of Qwen2, a transformer-based decoder-only language model pretrained on a large amount of data. In comparison with the previous released Qwen, the improvements include:\n\n- Significant performance improvement in human preference for chat models\n- Multilingual support of both base and chat models\n- Stable support of 32K context length for models of all sizes\n\nFor more details, see this [blog post](https://qwenlm.github.io/blog/qwen1.5/) and [GitHub repo](https://github.com/QwenLM/Qwen1.5).\n\nUsage of this model is subject to [Tongyi Qianwen LICENSE AGREEMENT](https://huggingface.co/Qwen/Qwen1.5-110B-Chat/blob/main/LICENSE).","pricing":{"prompt":"0.00000072","completion":"0.00000072","image":"0","request":"0"},"context_length":32768,"architecture":{"modality":"text->text","tokenizer":"Qwen","instruct_type":"chatml"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"qwen/qwen-72b-chat","name":"Qwen 1.5 72B Chat","created":1715212800,"description":"Qwen1.5 72B is the beta version of Qwen2, a transformer-based decoder-only language model pretrained on a large amount of data. In comparison with the previous released Qwen, the improvements include:\n\n- Significant performance improvement in human preference for chat models\n- Multilingual support of both base and chat models\n- Stable support of 32K context length for models of all sizes\n\nFor more details, see this [blog post](https://qwenlm.github.io/blog/qwen1.5/) and [GitHub repo](https://github.com/QwenLM/Qwen1.5).\n\nUsage of this model is subject to [Tongyi Qianwen LICENSE AGREEMENT](https://huggingface.co/Qwen/Qwen1.5-110B-Chat/blob/main/LICENSE).","pricing":{"prompt":"0.00000081","completion":"0.00000081","image":"0","request":"0"},"context_length":32768,"architecture":{"modality":"text->text","tokenizer":"Qwen","instruct_type":"chatml"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"qwen/qwen-110b-chat","name":"Qwen 1.5 110B Chat","created":1715212800,"description":"Qwen1.5 110B is the beta version of Qwen2, a transformer-based decoder-only language model pretrained on a large amount of data. In comparison with the previous released Qwen, the improvements include:\n\n- Significant performance improvement in human preference for chat models\n- Multilingual support of both base and chat models\n- Stable support of 32K context length for models of all sizes\n\nFor more details, see this [blog post](https://qwenlm.github.io/blog/qwen1.5/) and [GitHub repo](https://github.com/QwenLM/Qwen1.5).\n\nUsage of this model is subject to [Tongyi Qianwen LICENSE AGREEMENT](https://huggingface.co/Qwen/Qwen1.5-110B-Chat/blob/main/LICENSE).","pricing":{"prompt":"0.00000162","completion":"0.00000162","image":"0","request":"0"},"context_length":32768,"architecture":{"modality":"text->text","tokenizer":"Qwen","instruct_type":"chatml"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"neversleep/llama-3-lumimaid-8b","name":"Llama 3 Lumimaid 8B","created":1714780800,"description":"The NeverSleep team is back, with a Llama 3 8B finetune trained on their curated roleplay data. Striking a balance between eRP and RP, Lumimaid was designed to be serious, yet uncensored when necessary.\n\nTo enhance it's overall intelligence and chat capability, roughly 40% of the training data was not roleplay. This provides a breadth of knowledge to access, while still keeping roleplay as the primary strength.\n\nUsage of this model is subject to [Meta's Acceptable Use Policy](https://llama.meta.com/llama3/use-policy/).","pricing":{"prompt":"0.0000001875","completion":"0.000001125","image":"0","request":"0"},"context_length":24576,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":"llama3"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"neversleep/llama-3-lumimaid-8b:extended","name":"Llama 3 Lumimaid 8B (extended)","created":1714780800,"description":"The NeverSleep team is back, with a Llama 3 8B finetune trained on their curated roleplay data. Striking a balance between eRP and RP, Lumimaid was designed to be serious, yet uncensored when necessary.\n\nTo enhance it's overall intelligence and chat capability, roughly 40% of the training data was not roleplay. This provides a breadth of knowledge to access, while still keeping roleplay as the primary strength.\n\nUsage of this model is subject to [Meta's Acceptable Use Policy](https://llama.meta.com/llama3/use-policy/).\n\n_These are extended-context endpoints for [Llama 3 Lumimaid 8B](/models/neversleep/llama-3-lumimaid-8b). They may have higher prices._","pricing":{"prompt":"0.0000001875","completion":"0.000001125","image":"0","request":"0"},"context_length":24576,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":"llama3"},"top_provider":{"max_completion_tokens":2048,"is_moderated":false},"per_request_limits":null},{"id":"snowflake/snowflake-arctic-instruct","name":"Snowflake: Arctic Instruct","created":1714435200,"description":"Arctic is a dense-MoE Hybrid transformer architecture pre-trained from scratch by the Snowflake AI Research Team. Arctic combines a 10B dense transformer model with a residual 128x3.66B MoE MLP resulting in 480B total and 17B active parameters chosen using a top-2 gating.\n\nTo read more about this model's release, [click here](https://www.snowflake.com/blog/arctic-open-efficient-foundation-language-models-snowflake/).","pricing":{"prompt":"0.00000216","completion":"0.00000216","image":"0","request":"0"},"context_length":4096,"architecture":{"modality":"text->text","tokenizer":"Llama2","instruct_type":"chatml"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"lynn/soliloquy-l3","name":"Lynn: Llama 3 Soliloquy 8B v2","created":1713744000,"description":"Soliloquy-L3 v2 is a fast, highly capable roleplaying model designed for immersive, dynamic experiences. Trained on over 250 million tokens of roleplaying data, Soliloquy-L3 has a vast knowledge base, rich literary expression, and support for up to 24k context length. It outperforms existing ~13B models, delivering enhanced roleplaying capabilities.\n\nUsage of this model is subject to [Meta's Acceptable Use Policy](https://llama.meta.com/llama3/use-policy/).","pricing":{"prompt":"0.00000005","completion":"0.00000005","image":"0","request":"0"},"context_length":24576,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":"llama3"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"sao10k/fimbulvetr-11b-v2","name":"Fimbulvetr 11B v2","created":1713657600,"description":"Creative writing model, routed with permission. It's fast, it keeps the conversation going, and it stays in character.\n\nIf you submit a raw prompt, you can use Alpaca or Vicuna formats.","pricing":{"prompt":"0.000000375","completion":"0.0000015","image":"0","request":"0"},"context_length":8192,"architecture":{"modality":"text->text","tokenizer":"Llama2","instruct_type":"alpaca"},"top_provider":{"max_completion_tokens":2048,"is_moderated":false},"per_request_limits":null},{"id":"meta-llama/llama-3-70b-instruct","name":"Meta: Llama 3 70B Instruct","created":1713398400,"description":"Meta's latest class of model (Llama 3) launched with a variety of sizes & flavors. This 70B instruct-tuned version was optimized for high quality dialogue usecases.\n\nIt has demonstrated strong performance compared to leading closed-source models in human evaluations.\n\nTo read more about the model release, [click here](https://ai.meta.com/blog/meta-llama-3/). Usage of this model is subject to [Meta's Acceptable Use Policy](https://llama.meta.com/llama3/use-policy/).","pricing":{"prompt":"0.00000051","completion":"0.00000074","image":"0","request":"0"},"context_length":8192,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":"llama3"},"top_provider":{"max_completion_tokens":8192,"is_moderated":false},"per_request_limits":null},{"id":"meta-llama/llama-3-70b-instruct:nitro","name":"Meta: Llama 3 70B Instruct (nitro)","created":1713398400,"description":"Meta's latest class of model (Llama 3) launched with a variety of sizes & flavors. This 70B instruct-tuned version was optimized for high quality dialogue usecases.\n\nIt has demonstrated strong performance compared to leading closed-source models in human evaluations.\n\nTo read more about the model release, [click here](https://ai.meta.com/blog/meta-llama-3/). Usage of this model is subject to [Meta's Acceptable Use Policy](https://llama.meta.com/llama3/use-policy/).\n\n_These are higher-throughput endpoints for [Llama 3 70B Instruct](/models/meta-llama/llama-3-70b-instruct). They may have higher prices._","pricing":{"prompt":"0.000000792","completion":"0.000000792","image":"0","request":"0"},"context_length":8192,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":"llama3"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"meta-llama/llama-3-8b-instruct:free","name":"Meta: Llama 3 8B Instruct (free)","created":1713398400,"description":"Meta's latest class of model (Llama 3) launched with a variety of sizes & flavors. This 8B instruct-tuned version was optimized for high quality dialogue usecases.\n\nIt has demonstrated strong performance compared to leading closed-source models in human evaluations.\n\nTo read more about the model release, [click here](https://ai.meta.com/blog/meta-llama-3/). Usage of this model is subject to [Meta's Acceptable Use Policy](https://llama.meta.com/llama3/use-policy/).\n\n_These are free, rate-limited endpoints for [Llama 3 8B Instruct](/models/meta-llama/llama-3-8b-instruct). Outputs may be cached. Read about rate limits [here](/docs/limits)._","pricing":{"prompt":"0","completion":"0","image":"0","request":"0"},"context_length":8192,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":"llama3"},"top_provider":{"max_completion_tokens":4096,"is_moderated":false},"per_request_limits":null},{"id":"meta-llama/llama-3-8b-instruct","name":"Meta: Llama 3 8B Instruct","created":1713398400,"description":"Meta's latest class of model (Llama 3) launched with a variety of sizes & flavors. This 8B instruct-tuned version was optimized for high quality dialogue usecases.\n\nIt has demonstrated strong performance compared to leading closed-source models in human evaluations.\n\nTo read more about the model release, [click here](https://ai.meta.com/blog/meta-llama-3/). Usage of this model is subject to [Meta's Acceptable Use Policy](https://llama.meta.com/llama3/use-policy/).","pricing":{"prompt":"0.00000006","completion":"0.00000006","image":"0","request":"0"},"context_length":8192,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":"llama3"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"meta-llama/llama-3-8b-instruct:nitro","name":"Meta: Llama 3 8B Instruct (nitro)","created":1713398400,"description":"Meta's latest class of model (Llama 3) launched with a variety of sizes & flavors. This 8B instruct-tuned version was optimized for high quality dialogue usecases.\n\nIt has demonstrated strong performance compared to leading closed-source models in human evaluations.\n\nTo read more about the model release, [click here](https://ai.meta.com/blog/meta-llama-3/). Usage of this model is subject to [Meta's Acceptable Use Policy](https://llama.meta.com/llama3/use-policy/).\n\n_These are higher-throughput endpoints for [Llama 3 8B Instruct](/models/meta-llama/llama-3-8b-instruct). They may have higher prices._","pricing":{"prompt":"0.000000162","completion":"0.000000162","image":"0","request":"0"},"context_length":8192,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":"llama3"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"meta-llama/llama-3-8b-instruct:extended","name":"Meta: Llama 3 8B Instruct (extended)","created":1713398400,"description":"Meta's latest class of model (Llama 3) launched with a variety of sizes & flavors. This 8B instruct-tuned version was optimized for high quality dialogue usecases.\n\nIt has demonstrated strong performance compared to leading closed-source models in human evaluations.\n\nTo read more about the model release, [click here](https://ai.meta.com/blog/meta-llama-3/). Usage of this model is subject to [Meta's Acceptable Use Policy](https://llama.meta.com/llama3/use-policy/).\n\n_These are extended-context endpoints for [Llama 3 8B Instruct](/models/meta-llama/llama-3-8b-instruct). They may have higher prices._","pricing":{"prompt":"0.0000001875","completion":"0.000001125","image":"0","request":"0"},"context_length":16384,"architecture":{"modality":"text->text","tokenizer":"Llama3","instruct_type":"llama3"},"top_provider":{"max_completion_tokens":2048,"is_moderated":false},"per_request_limits":null},{"id":"mistralai/mixtral-8x22b-instruct","name":"Mistral: Mixtral 8x22B Instruct","created":1713312000,"description":"Mistral's official instruct fine-tuned version of [Mixtral 8x22B](/models/mistralai/mixtral-8x22b). It uses 39B active parameters out of 141B, offering unparalleled cost efficiency for its size. Its strengths include:\n- strong math, coding, and reasoning\n- large context length (64k)\n- fluency in English, French, Italian, German, and Spanish\n\nSee benchmarks on the launch announcement [here](https://mistral.ai/news/mixtral-8x22b/).\n#moe","pricing":{"prompt":"0.00000065","completion":"0.00000065","image":"0","request":"0"},"context_length":65536,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"mistral"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"microsoft/wizardlm-2-7b","name":"WizardLM-2 7B","created":1713225600,"description":"WizardLM-2 7B is the smaller variant of Microsoft AI's latest Wizard model. It is the fastest and achieves comparable performance with existing 10x larger opensource leading models\n\nIt is a finetune of [Mistral 7B Instruct](/models/mistralai/mistral-7b-instruct), using the same technique as [WizardLM-2 8x22B](/models/microsoft/wizardlm-2-8x22b).\n\nTo read more about the model release, [click here](https://wizardlm.github.io/WizardLM2/).\n\n#moe","pricing":{"prompt":"0.00000006","completion":"0.00000006","image":"0","request":"0"},"context_length":32000,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"vicuna"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"microsoft/wizardlm-2-8x22b","name":"WizardLM-2 8x22B","created":1713225600,"description":"WizardLM-2 8x22B is Microsoft AI's most advanced Wizard model. It demonstrates highly competitive performance compared to leading proprietary models, and it consistently outperforms all existing state-of-the-art opensource models.\n\nIt is an instruct finetune of [Mixtral 8x22B](/models/mistralai/mixtral-8x22b).\n\nTo read more about the model release, [click here](https://wizardlm.github.io/WizardLM2/).\n\n#moe","pricing":{"prompt":"0.00000063","completion":"0.00000063","image":"0","request":"0"},"context_length":65536,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"vicuna"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"mistralai/mixtral-8x22b","name":"Mistral: Mixtral 8x22B (base)","created":1712707200,"description":"Mixtral 8x22B is a large-scale language model from Mistral AI. It consists of 8 experts, each 22 billion parameters, with each token using 2 experts at a time.\n\nIt was released via [X](https://twitter.com/MistralAI/status/1777869263778291896).\n\n#moe","pricing":{"prompt":"0.00000108","completion":"0.00000108","image":"0","request":"0"},"context_length":65536,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"chatml"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"google/gemini-pro-1.5","name":"Google: Gemini Pro 1.5","created":1712620800,"description":"Google's latest multimodal model, supporting image and video in text or chat prompts.\n\nOptimized for language tasks including:\n\n- Code generation\n- Text generation\n- Text editing\n- Problem solving\n- Recommendations\n- Information extraction\n- Data extraction or generation\n- AI agents\n\nUsage of Gemini is subject to Google's [Gemini Terms of Use](https://ai.google.dev/terms).\n\n#multimodal","pricing":{"prompt":"0.0000025","completion":"0.0000075","image":"0.00263","request":"0"},"context_length":4000000,"architecture":{"modality":"text+image->text","tokenizer":"Gemini","instruct_type":null},"top_provider":{"max_completion_tokens":32768,"is_moderated":false},"per_request_limits":null},{"id":"openai/gpt-4-turbo","name":"OpenAI: GPT-4 Turbo","created":1712620800,"description":"The latest GPT-4 Turbo model with vision capabilities. Vision requests can now use JSON mode and function calling.\n\nTraining data: up to December 2023.","pricing":{"prompt":"0.00001","completion":"0.00003","image":"0.01445","request":"0"},"context_length":128000,"architecture":{"modality":"text+image->text","tokenizer":"GPT","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":true},"per_request_limits":null},{"id":"cohere/command-r-plus","name":"Cohere: Command R+","created":1712188800,"description":"Command R+ is a new, 104B-parameter LLM from Cohere. It's useful for roleplay, general consumer usecases, and Retrieval Augmented Generation (RAG).\n\nIt offers multilingual support for ten key languages to facilitate global business operations. See benchmarks and the launch post [here](https://txt.cohere.com/command-r-plus-microsoft-azure/).\n\nUse of this model is subject to Cohere's [Acceptable Use Policy](https://docs.cohere.com/docs/c4ai-acceptable-use-policy).","pricing":{"prompt":"0.000003","completion":"0.000015","image":"0","request":"0"},"context_length":128000,"architecture":{"modality":"text->text","tokenizer":"Cohere","instruct_type":null},"top_provider":{"max_completion_tokens":4000,"is_moderated":false},"per_request_limits":null},{"id":"databricks/dbrx-instruct","name":"Databricks: DBRX 132B Instruct","created":1711670400,"description":"DBRX is a new open source large language model developed by Databricks. At 132B, it outperforms existing open source LLMs like Llama 2 70B and [Mixtral-8x7b](/models/mistralai/mixtral-8x7b) on standard industry benchmarks for language understanding, programming, math, and logic.\n\nIt uses a fine-grained mixture-of-experts (MoE) architecture. 36B parameters are active on any input. It was pre-trained on 12T tokens of text and code data. Compared to other open MoE models like Mixtral-8x7B and Grok-1, DBRX is fine-grained, meaning it uses a larger number of smaller experts.\n\nSee the launch announcement and benchmark results [here](https://www.databricks.com/blog/introducing-dbrx-new-state-art-open-llm).\n\n#moe","pricing":{"prompt":"0.00000108","completion":"0.00000108","image":"0","request":"0"},"context_length":32768,"architecture":{"modality":"text->text","tokenizer":"Other","instruct_type":"chatml"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"sophosympatheia/midnight-rose-70b","name":"Midnight Rose 70B","created":1711065600,"description":"A merge with a complex family tree, this model was crafted for roleplaying and storytelling. Midnight Rose is a successor to Rogue Rose and Aurora Nights and improves upon them both. It wants to produce lengthy output by default and is the best creative writing merge produced so far by sophosympatheia.\n\nDescending from earlier versions of Midnight Rose and [Wizard Tulu Dolphin 70B](https://huggingface.co/sophosympatheia/Wizard-Tulu-Dolphin-70B-v1.0), it inherits the best qualities of each.","pricing":{"prompt":"0.0000008","completion":"0.0000008","image":"0","request":"0"},"context_length":4096,"architecture":{"modality":"text->text","tokenizer":"Llama2","instruct_type":"airoboros"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"cohere/command-r","name":"Cohere: Command R","created":1710374400,"description":"Command-R is a 35B parameter model that performs conversational language tasks at a higher quality, more reliably, and with a longer context than previous models. It can be used for complex workflows like code generation, retrieval augmented generation (RAG), tool use, and agents.\n\nRead the launch post [here](https://txt.cohere.com/command-r/).\n\nUse of this model is subject to Cohere's [Acceptable Use Policy](https://docs.cohere.com/docs/c4ai-acceptable-use-policy).","pricing":{"prompt":"0.0000005","completion":"0.0000015","image":"0","request":"0"},"context_length":128000,"architecture":{"modality":"text->text","tokenizer":"Cohere","instruct_type":null},"top_provider":{"max_completion_tokens":4000,"is_moderated":false},"per_request_limits":null},{"id":"cohere/command","name":"Cohere: Command","created":1710374400,"description":"Command is an instruction-following conversational model that performs language tasks with high quality, more reliably and with a longer context than our base generative models.\n\nUse of this model is subject to Cohere's [Acceptable Use Policy](https://docs.cohere.com/docs/c4ai-acceptable-use-policy).","pricing":{"prompt":"0.000001","completion":"0.000002","image":"0","request":"0"},"context_length":4096,"architecture":{"modality":"text->text","tokenizer":"Cohere","instruct_type":null},"top_provider":{"max_completion_tokens":4000,"is_moderated":false},"per_request_limits":null},{"id":"anthropic/claude-3-haiku","name":"Anthropic: Claude 3 Haiku","created":1710288000,"description":"Claude 3 Haiku is Anthropic's fastest and most compact model for\nnear-instant responsiveness. Quick and accurate targeted performance.\n\nSee the launch announcement and benchmark results [here](https://www.anthropic.com/news/claude-3-haiku)\n\n#multimodal","pricing":{"prompt":"0.00000025","completion":"0.00000125","image":"0.0004","request":"0"},"context_length":200000,"architecture":{"modality":"text+image->text","tokenizer":"Claude","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":true},"per_request_limits":null},{"id":"anthropic/claude-3-haiku:beta","name":"Anthropic: Claude 3 Haiku (self-moderated)","created":1710288000,"description":"Claude 3 Haiku is Anthropic's fastest and most compact model for\nnear-instant responsiveness. Quick and accurate targeted performance.\n\nSee the launch announcement and benchmark results [here](https://www.anthropic.com/news/claude-3-haiku)\n\n#multimodal\n\n_This is a faster endpoint, made available in collaboration with Anthropic, that is self-moderated: response moderation happens on the model's side instead of OpenRouter's. For requests that pass moderation, it's identical to the [Standard](/models/anthropic/claude-3-haiku) variant._","pricing":{"prompt":"0.00000025","completion":"0.00000125","image":"0.0004","request":"0"},"context_length":200000,"architecture":{"modality":"text+image->text","tokenizer":"Claude","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":false},"per_request_limits":null},{"id":"anthropic/claude-3-sonnet","name":"Anthropic: Claude 3 Sonnet","created":1709596800,"description":"Claude 3 Sonnet is an ideal balance of intelligence and speed for enterprise workloads. Maximum utility at a lower price, dependable, balanced for scaled deployments.\n\nSee the launch announcement and benchmark results [here](https://www.anthropic.com/news/claude-3-family)\n\n#multimodal","pricing":{"prompt":"0.000003","completion":"0.000015","image":"0.0048","request":"0"},"context_length":200000,"architecture":{"modality":"text+image->text","tokenizer":"Claude","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":true},"per_request_limits":null},{"id":"anthropic/claude-3-sonnet:beta","name":"Anthropic: Claude 3 Sonnet (self-moderated)","created":1709596800,"description":"Claude 3 Sonnet is an ideal balance of intelligence and speed for enterprise workloads. Maximum utility at a lower price, dependable, balanced for scaled deployments.\n\nSee the launch announcement and benchmark results [here](https://www.anthropic.com/news/claude-3-family)\n\n#multimodal\n\n_This is a faster endpoint, made available in collaboration with Anthropic, that is self-moderated: response moderation happens on the model's side instead of OpenRouter's. For requests that pass moderation, it's identical to the [Standard](/models/anthropic/claude-3-sonnet) variant._","pricing":{"prompt":"0.000003","completion":"0.000015","image":"0.0048","request":"0"},"context_length":200000,"architecture":{"modality":"text+image->text","tokenizer":"Claude","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":false},"per_request_limits":null},{"id":"anthropic/claude-3-opus","name":"Anthropic: Claude 3 Opus","created":1709596800,"description":"Claude 3 Opus is Anthropic's most powerful model for highly complex tasks. It boasts top-level performance, intelligence, fluency, and understanding.\n\nSee the launch announcement and benchmark results [here](https://www.anthropic.com/news/claude-3-family)\n\n#multimodal","pricing":{"prompt":"0.000015","completion":"0.000075","image":"0.024","request":"0"},"context_length":200000,"architecture":{"modality":"text+image->text","tokenizer":"Claude","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":true},"per_request_limits":null},{"id":"anthropic/claude-3-opus:beta","name":"Anthropic: Claude 3 Opus (self-moderated)","created":1709596800,"description":"Claude 3 Opus is Anthropic's most powerful model for highly complex tasks. It boasts top-level performance, intelligence, fluency, and understanding.\n\nSee the launch announcement and benchmark results [here](https://www.anthropic.com/news/claude-3-family)\n\n#multimodal\n\n_This is a faster endpoint, made available in collaboration with Anthropic, that is self-moderated: response moderation happens on the model's side instead of OpenRouter's. For requests that pass moderation, it's identical to the [Standard](/models/anthropic/claude-3-opus) variant._","pricing":{"prompt":"0.000015","completion":"0.000075","image":"0.024","request":"0"},"context_length":200000,"architecture":{"modality":"text+image->text","tokenizer":"Claude","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":false},"per_request_limits":null},{"id":"mistralai/mistral-large","name":"Mistral Large","created":1708905600,"description":"This is Mistral AI's flagship model, Mistral Large 2 (version `mistral-large-2407`). It's a proprietary weights-available model and excels at reasoning, code, JSON, chat, and more. Read the launch announcement [here](https://mistral.ai/news/mistral-large-2407/).\n\nIt is fluent in English, French, Spanish, German, and Italian, with high grammatical accuracy, and its long context window allows precise information recall from large documents.","pricing":{"prompt":"0.000003","completion":"0.000009","image":"0","request":"0"},"context_length":128000,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":null},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"google/gemma-7b-it:free","name":"Google: Gemma 7B (free)","created":1708560000,"description":"Gemma by Google is an advanced, open-source language model family, leveraging the latest in decoder-only, text-to-text technology. It offers English language capabilities across text generation tasks like question answering, summarization, and reasoning. The Gemma 7B variant is comparable in performance to leading open source models.\n\nUsage of Gemma is subject to Google's [Gemma Terms of Use](https://ai.google.dev/gemma/terms).\n\n_These are free, rate-limited endpoints for [Gemma 7B](/models/google/gemma-7b-it). Outputs may be cached. Read about rate limits [here](/docs/limits)._","pricing":{"prompt":"0","completion":"0","image":"0","request":"0"},"context_length":8192,"architecture":{"modality":"text->text","tokenizer":"Gemini","instruct_type":"gemma"},"top_provider":{"max_completion_tokens":4096,"is_moderated":false},"per_request_limits":null},{"id":"google/gemma-7b-it","name":"Google: Gemma 7B","created":1708560000,"description":"Gemma by Google is an advanced, open-source language model family, leveraging the latest in decoder-only, text-to-text technology. It offers English language capabilities across text generation tasks like question answering, summarization, and reasoning. The Gemma 7B variant is comparable in performance to leading open source models.\n\nUsage of Gemma is subject to Google's [Gemma Terms of Use](https://ai.google.dev/gemma/terms).","pricing":{"prompt":"0.00000007","completion":"0.00000007","image":"0","request":"0"},"context_length":8192,"architecture":{"modality":"text->text","tokenizer":"Gemini","instruct_type":"gemma"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"google/gemma-7b-it:nitro","name":"Google: Gemma 7B (nitro)","created":1708560000,"description":"Gemma by Google is an advanced, open-source language model family, leveraging the latest in decoder-only, text-to-text technology. It offers English language capabilities across text generation tasks like question answering, summarization, and reasoning. The Gemma 7B variant is comparable in performance to leading open source models.\n\nUsage of Gemma is subject to Google's [Gemma Terms of Use](https://ai.google.dev/gemma/terms).\n\n_These are higher-throughput endpoints for [Gemma 7B](/models/google/gemma-7b-it). They may have higher prices._","pricing":{"prompt":"0.00000007","completion":"0.00000007","image":"0","request":"0"},"context_length":8192,"architecture":{"modality":"text->text","tokenizer":"Gemini","instruct_type":"gemma"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"nousresearch/nous-hermes-2-mistral-7b-dpo","name":"Nous: Hermes 2 Mistral 7B DPO","created":1708473600,"description":"This is the flagship 7B Hermes model, a Direct Preference Optimization (DPO) of [Teknium/OpenHermes-2.5-Mistral-7B](/models/teknium/openhermes-2.5-mistral-7b). It shows improvement across the board on all benchmarks tested - AGIEval, BigBench Reasoning, GPT4All, and TruthfulQA.\n\nThe model prior to DPO was trained on 1,000,000 instructions/chats of GPT-4 quality or better, primarily synthetic data as well as other high quality datasets.","pricing":{"prompt":"0.00000018","completion":"0.00000018","image":"0","request":"0"},"context_length":8192,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"chatml"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"meta-llama/codellama-70b-instruct","name":"Meta: CodeLlama 70B Instruct","created":1706572800,"description":"Code Llama is a family of large language models for code. This one is based on [Llama 2 70B](/models/meta-llama/llama-2-70b-chat) and provides zero-shot instruction-following ability for programming tasks.","pricing":{"prompt":"0.00000081","completion":"0.00000081","image":"0","request":"0"},"context_length":2048,"architecture":{"modality":"text->text","tokenizer":"Llama2","instruct_type":"code-llama"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"recursal/eagle-7b","name":"RWKV v5: Eagle 7B","created":1706486400,"description":"Eagle 7B is trained on 1.1 Trillion Tokens across 100+ world languages (70% English, 15% multilang, 15% code).\n\n- Built on the [RWKV-v5](/models?q=rwkv) architecture (a linear transformer with 10-100x+ lower inference cost)\n- Ranks as the world's greenest 7B model (per token)\n- Outperforms all 7B class models in multi-lingual benchmarks\n- Approaches Falcon (1.5T), LLaMA2 (2T), Mistral (>2T?) level of performance in English evals\n- Trade blows with MPT-7B (1T) in English evals\n- All while being an [\"Attention-Free Transformer\"](https://www.isattentionallyouneed.com/)\n\nEagle 7B models are provided for free, by [Recursal.AI](https://recursal.ai), for the beta period till end of March 2024\n\nFind out more [here](https://blog.rwkv.com/p/eagle-7b-soaring-past-transformers)\n\n[rnn](/models?q=rwkv)","pricing":{"prompt":"0","completion":"0","image":"0","request":"0"},"context_length":10000,"architecture":{"modality":"text->text","tokenizer":"RWKV","instruct_type":"rwkv"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"openai/gpt-4-turbo-preview","name":"OpenAI: GPT-4 Turbo Preview","created":1706140800,"description":"The preview GPT-4 model with improved instruction following, JSON mode, reproducible outputs, parallel function calling, and more. Training data: up to Dec 2023.\n\n**Note:** heavily rate limited by OpenAI while in preview.","pricing":{"prompt":"0.00001","completion":"0.00003","image":"0","request":"0"},"context_length":128000,"architecture":{"modality":"text->text","tokenizer":"GPT","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":true},"per_request_limits":null},{"id":"openai/gpt-3.5-turbo-0613","name":"OpenAI: GPT-3.5 Turbo (older v0613)","created":1706140800,"description":"GPT-3.5 Turbo is OpenAI's fastest model. It can understand and generate natural language or code, and is optimized for chat and traditional completion tasks.\n\nTraining data up to Sep 2021.","pricing":{"prompt":"0.000001","completion":"0.000002","image":"0","request":"0"},"context_length":4095,"architecture":{"modality":"text->text","tokenizer":"GPT","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":true},"per_request_limits":null},{"id":"nousresearch/nous-hermes-2-mixtral-8x7b-sft","name":"Nous: Hermes 2 Mixtral 8x7B SFT","created":1705363200,"description":"Nous Hermes 2 Mixtral 8x7B SFT is the supervised finetune only version of [the Nous Research model](/models/nousresearch/nous-hermes-2-mixtral-8x7b-dpo) trained over the [Mixtral 8x7B MoE LLM](/models/mistralai/mixtral-8x7b).\n\nThe model was trained on over 1,000,000 entries of primarily GPT-4 generated data, as well as other high quality data from open datasets across the AI landscape, achieving state of the art performance on a variety of tasks.\n\n#moe","pricing":{"prompt":"0.00000054","completion":"0.00000054","image":"0","request":"0"},"context_length":32768,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"chatml"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"nousresearch/nous-hermes-2-mixtral-8x7b-dpo","name":"Nous: Hermes 2 Mixtral 8x7B DPO","created":1705363200,"description":"Nous Hermes 2 Mixtral 8x7B DPO is the new flagship Nous Research model trained over the [Mixtral 8x7B MoE LLM](/models/mistralai/mixtral-8x7b).\n\nThe model was trained on over 1,000,000 entries of primarily [GPT-4](/models/openai/gpt-4) generated data, as well as other high quality data from open datasets across the AI landscape, achieving state of the art performance on a variety of tasks.\n\n#moe","pricing":{"prompt":"0.00000045","completion":"0.00000045","image":"0","request":"0"},"context_length":32768,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"chatml"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"mistralai/mistral-medium","name":"Mistral Medium","created":1704844800,"description":"This is Mistral AI's closed-source, medium-sided model. It's powered by a closed-source prototype and excels at reasoning, code, JSON, chat, and more. In benchmarks, it compares with many of the flagship models of other companies.","pricing":{"prompt":"0.0000027","completion":"0.0000081","image":"0","request":"0"},"context_length":32000,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":null},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"mistralai/mistral-small","name":"Mistral Small","created":1704844800,"description":"This model is currently powered by Mixtral-8X7B-v0.1, a sparse mixture of experts model with 12B active parameters. It has better reasoning, exhibits more capabilities, can produce and reason about code, and is multiligual, supporting English, French, German, Italian, and Spanish.\n#moe","pricing":{"prompt":"0.000002","completion":"0.000006","image":"0","request":"0"},"context_length":32000,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":null},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"mistralai/mistral-tiny","name":"Mistral Tiny","created":1704844800,"description":"This model is currently powered by Mistral-7B-v0.2, and incorporates a \"better\" fine-tuning than [Mistral 7B](/models/mistralai/mistral-7b-instruct-v0.1), inspired by community work. It's best used for large batch processing tasks where cost is a significant factor but reasoning capabilities are not crucial.","pricing":{"prompt":"0.00000025","completion":"0.00000025","image":"0","request":"0"},"context_length":32000,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":null},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"austism/chronos-hermes-13b","name":"Chronos Hermes 13B v2","created":1704412800,"description":"A 75/25 merge of [Chronos 13b v2](https://huggingface.co/elinas/chronos-13b-v2) and [Nous Hermes Llama2 13b](/models/nousresearch/nous-hermes-llama2-13b). This offers the imaginative writing style of Chronos while retaining coherency. Outputs are long and use exceptional prose. #merge","pricing":{"prompt":"0.00000013","completion":"0.00000013","image":"0","request":"0"},"context_length":4096,"architecture":{"modality":"text->text","tokenizer":"Llama2","instruct_type":"alpaca"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"nousresearch/nous-hermes-yi-34b","name":"Nous: Hermes 2 Yi 34B","created":1704153600,"description":"Nous Hermes 2 Yi 34B was trained on 1,000,000 entries of primarily GPT-4 generated data, as well as other high quality data from open datasets across the AI landscape.\n\nNous-Hermes 2 on Yi 34B outperforms all Nous-Hermes & Open-Hermes models of the past, achieving new heights in all benchmarks for a Nous Research LLM as well as surpassing many popular finetunes.","pricing":{"prompt":"0.00000072","completion":"0.00000072","image":"0","request":"0"},"context_length":4096,"architecture":{"modality":"text->text","tokenizer":"Yi","instruct_type":"chatml"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"mistralai/mistral-7b-instruct-v0.2","name":"Mistral: Mistral 7B Instruct v0.2","created":1703721600,"description":"A high-performing, industry-standard 7.3B parameter model, with optimizations for speed and context length.\n\nAn improved version of [Mistral 7B Instruct](/modelsmistralai/mistral-7b-instruct-v0.1), with the following changes:\n\n- 32k context window (vs 8k context in v0.1)\n- Rope-theta = 1e6\n- No Sliding-Window Attention","pricing":{"prompt":"0.00000006","completion":"0.00000006","image":"0","request":"0"},"context_length":32768,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"mistral"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"cognitivecomputations/dolphin-mixtral-8x7b","name":"Dolphin 2.6 Mixtral 8x7B 🐬","created":1703116800,"description":"This is a 16k context fine-tune of [Mixtral-8x7b](/models/mistralai/mixtral-8x7b). It excels in coding tasks due to extensive training with coding data and is known for its obedience, although it lacks DPO tuning.\n\nThe model is uncensored and is stripped of alignment and bias. It requires an external alignment layer for ethical use. Users are cautioned to use this highly compliant model responsibly, as detailed in a blog post about uncensored models at [erichartford.com/uncensored-models](https://erichartford.com/uncensored-models).\n\n#moe #uncensored","pricing":{"prompt":"0.0000005","completion":"0.0000005","image":"0","request":"0"},"context_length":32768,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"chatml"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"google/gemini-pro-vision","name":"Google: Gemini Pro Vision 1.0","created":1702425600,"description":"Google's flagship multimodal model, supporting image and video in text or chat prompts for a text or code response.\n\nSee the benchmarks and prompting guidelines from [Deepmind](https://deepmind.google/technologies/gemini/).\n\nUsage of Gemini is subject to Google's [Gemini Terms of Use](https://ai.google.dev/terms).\n\n#multimodal","pricing":{"prompt":"0.000000125","completion":"0.000000375","image":"0.0025","request":"0"},"context_length":65536,"architecture":{"modality":"text+image->text","tokenizer":"Gemini","instruct_type":null},"top_provider":{"max_completion_tokens":8192,"is_moderated":false},"per_request_limits":null},{"id":"google/gemini-pro","name":"Google: Gemini Pro 1.0","created":1702425600,"description":"Google's flagship text generation model. Designed to handle natural language tasks, multiturn text and code chat, and code generation.\n\nSee the benchmarks and prompting guidelines from [Deepmind](https://deepmind.google/technologies/gemini/).\n\nUsage of Gemini is subject to Google's [Gemini Terms of Use](https://ai.google.dev/terms).","pricing":{"prompt":"0.000000125","completion":"0.000000375","image":"0.0025","request":"0"},"context_length":131040,"architecture":{"modality":"text->text","tokenizer":"Gemini","instruct_type":null},"top_provider":{"max_completion_tokens":32768,"is_moderated":false},"per_request_limits":null},{"id":"recursal/rwkv-5-3b-ai-town","name":"RWKV v5 3B AI Town","created":1702166400,"description":"This is an [RWKV 3B model](/models/rwkv/rwkv-5-world-3b) finetuned specifically for the [AI Town](https://github.com/a16z-infra/ai-town) project.\n\n[RWKV](https://wiki.rwkv.com) is an RNN (recurrent neural network) with transformer-level performance. It aims to combine the best of RNNs and transformers - great performance, fast inference, low VRAM, fast training, \"infinite\" context length, and free sentence embedding.\n\nRWKV 3B models are provided for free, by Recursal.AI, for the beta period. More details [here](https://substack.recursal.ai/p/public-rwkv-3b-model-via-openrouter).\n\n#rnn","pricing":{"prompt":"0","completion":"0","image":"0","request":"0"},"context_length":10000,"architecture":{"modality":"text->text","tokenizer":"RWKV","instruct_type":"rwkv"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"rwkv/rwkv-5-world-3b","name":"RWKV v5 World 3B","created":1702166400,"description":"[RWKV](https://wiki.rwkv.com) is an RNN (recurrent neural network) with transformer-level performance. It aims to combine the best of RNNs and transformers - great performance, fast inference, low VRAM, fast training, \"infinite\" context length, and free sentence embedding.\n\nRWKV-5 is trained on 100+ world languages (70% English, 15% multilang, 15% code).\n\nRWKV 3B models are provided for free, by Recursal.AI, for the beta period. More details [here](https://substack.recursal.ai/p/public-rwkv-3b-model-via-openrouter).\n\n#rnn","pricing":{"prompt":"0","completion":"0","image":"0","request":"0"},"context_length":10000,"architecture":{"modality":"text->text","tokenizer":"RWKV","instruct_type":"rwkv"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"mistralai/mixtral-8x7b-instruct","name":"Mixtral 8x7B Instruct","created":1702166400,"description":"A pretrained generative Sparse Mixture of Experts, by Mistral AI, for chat and instruction use. Incorporates 8 experts (feed-forward networks) for a total of 47 billion parameters.\n\nInstruct model fine-tuned by Mistral. #moe","pricing":{"prompt":"0.00000024","completion":"0.00000024","image":"0","request":"0"},"context_length":32768,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"mistral"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"mistralai/mixtral-8x7b-instruct:nitro","name":"Mixtral 8x7B Instruct (nitro)","created":1702166400,"description":"A pretrained generative Sparse Mixture of Experts, by Mistral AI, for chat and instruction use. Incorporates 8 experts (feed-forward networks) for a total of 47 billion parameters.\n\nInstruct model fine-tuned by Mistral. #moe\n\n_These are higher-throughput endpoints for [Mixtral 8x7B Instruct](/models/mistralai/mixtral-8x7b-instruct). They may have higher prices._","pricing":{"prompt":"0.00000054","completion":"0.00000054","image":"0","request":"0"},"context_length":32768,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"mistral"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"mistralai/mixtral-8x7b","name":"Mixtral 8x7B (base)","created":1702166400,"description":"A pretrained generative Sparse Mixture of Experts, by Mistral AI. Incorporates 8 experts (feed-forward networks) for a total of 47B parameters. Base model (not fine-tuned for instructions) - see [Mixtral 8x7B Instruct](/models/mistralai/mixtral-8x7b-instruct) for an instruct-tuned model.\n\n#moe","pricing":{"prompt":"0.00000054","completion":"0.00000054","image":"0","request":"0"},"context_length":32768,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"none"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"togethercomputer/stripedhyena-hessian-7b","name":"StripedHyena Hessian 7B (base)","created":1702080000,"description":"This is the base model variant of the [StripedHyena series](/models?q=stripedhyena), developed by Together.\n\nStripedHyena uses a new architecture that competes with traditional Transformers, particularly in long-context data processing. It combines attention mechanisms with gated convolutions for improved speed, efficiency, and scaling. This model marks an advancement in AI architecture for sequence modeling tasks.","pricing":{"prompt":"0.00000018","completion":"0.00000018","image":"0","request":"0"},"context_length":32768,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"none"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"togethercomputer/stripedhyena-nous-7b","name":"StripedHyena Nous 7B","created":1702080000,"description":"This is the chat model variant of the [StripedHyena series](/models?q=stripedhyena) developed by Together in collaboration with Nous Research.\n\nStripedHyena uses a new architecture that competes with traditional Transformers, particularly in long-context data processing. It combines attention mechanisms with gated convolutions for improved speed, efficiency, and scaling. This model marks a significant advancement in AI architecture for sequence modeling tasks.","pricing":{"prompt":"0.00000018","completion":"0.00000018","image":"0","request":"0"},"context_length":32768,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"alpaca"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"gryphe/mythomist-7b:free","name":"MythoMist 7B (free)","created":1701907200,"description":"From the creator of [MythoMax](/models/gryphe/mythomax-l2-13b), merges a suite of models to reduce word anticipation, ministrations, and other undesirable words in ChatGPT roleplaying data.\n\nIt combines [Neural Chat 7B](/models/intel/neural-chat-7b), Airoboros 7b, [Toppy M 7B](/models/undi95/toppy-m-7b), [Zepher 7b beta](/models/huggingfaceh4/zephyr-7b-beta), [Nous Capybara 34B](/models/nousresearch/nous-capybara-34b), [OpenHeremes 2.5](/models/teknium/openhermes-2.5-mistral-7b), and many others.\n\n#merge\n\n_These are free, rate-limited endpoints for [MythoMist 7B](/models/gryphe/mythomist-7b). Outputs may be cached. Read about rate limits [here](/docs/limits)._","pricing":{"prompt":"0","completion":"0","image":"0","request":"0"},"context_length":32768,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"alpaca"},"top_provider":{"max_completion_tokens":4096,"is_moderated":false},"per_request_limits":null},{"id":"gryphe/mythomist-7b","name":"MythoMist 7B","created":1701907200,"description":"From the creator of [MythoMax](/models/gryphe/mythomax-l2-13b), merges a suite of models to reduce word anticipation, ministrations, and other undesirable words in ChatGPT roleplaying data.\n\nIt combines [Neural Chat 7B](/models/intel/neural-chat-7b), Airoboros 7b, [Toppy M 7B](/models/undi95/toppy-m-7b), [Zepher 7b beta](/models/huggingfaceh4/zephyr-7b-beta), [Nous Capybara 34B](/models/nousresearch/nous-capybara-34b), [OpenHeremes 2.5](/models/teknium/openhermes-2.5-mistral-7b), and many others.\n\n#merge","pricing":{"prompt":"0.000000375","completion":"0.000000375","image":"0","request":"0"},"context_length":32768,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"alpaca"},"top_provider":{"max_completion_tokens":2048,"is_moderated":false},"per_request_limits":null},{"id":"01-ai/yi-6b","name":"Yi 6B (base)","created":1701907200,"description":"The Yi series models are large language models trained from scratch by developers at [01.AI](https://01.ai/). This is the base 6B parameter model.","pricing":{"prompt":"0.00000018","completion":"0.00000018","image":"0","request":"0"},"context_length":4096,"architecture":{"modality":"text->text","tokenizer":"Yi","instruct_type":"none"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"01-ai/yi-34b","name":"Yi 34B (base)","created":1701907200,"description":"The Yi series models are large language models trained from scratch by developers at [01.AI](https://01.ai/). This is the base 34B parameter model.","pricing":{"prompt":"0.00000072","completion":"0.00000072","image":"0","request":"0"},"context_length":4096,"architecture":{"modality":"text->text","tokenizer":"Yi","instruct_type":"none"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"01-ai/yi-34b-chat","name":"Yi 34B Chat","created":1701907200,"description":"The Yi series models are large language models trained from scratch by developers at [01.AI](https://01.ai/). This 34B parameter model has been instruct-tuned for chat.","pricing":{"prompt":"0.00000072","completion":"0.00000072","image":"0","request":"0"},"context_length":4096,"architecture":{"modality":"text->text","tokenizer":"Yi","instruct_type":"chatml"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"nousresearch/nous-capybara-7b:free","name":"Nous: Capybara 7B (free)","created":1701734400,"description":"The Capybara series is a collection of datasets and models made by fine-tuning on data created by Nous, mostly in-house.\n\nV1.9 uses unalignment techniques for more consistent and dynamic control. It also leverages a significantly better foundation model, [Mistral 7B](/models/mistralai/mistral-7b-instruct-v0.1).\n\n_These are free, rate-limited endpoints for [Capybara 7B](/models/nousresearch/nous-capybara-7b). Outputs may be cached. Read about rate limits [here](/docs/limits)._","pricing":{"prompt":"0","completion":"0","image":"0","request":"0"},"context_length":8192,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"airoboros"},"top_provider":{"max_completion_tokens":4096,"is_moderated":false},"per_request_limits":null},{"id":"nousresearch/nous-capybara-7b","name":"Nous: Capybara 7B","created":1701734400,"description":"The Capybara series is a collection of datasets and models made by fine-tuning on data created by Nous, mostly in-house.\n\nV1.9 uses unalignment techniques for more consistent and dynamic control. It also leverages a significantly better foundation model, [Mistral 7B](/models/mistralai/mistral-7b-instruct-v0.1).","pricing":{"prompt":"0.00000018","completion":"0.00000018","image":"0","request":"0"},"context_length":8192,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"airoboros"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"openchat/openchat-7b:free","name":"OpenChat 3.5 7B (free)","created":1701129600,"description":"OpenChat 7B is a library of open-source language models, fine-tuned with \"C-RLFT (Conditioned Reinforcement Learning Fine-Tuning)\" - a strategy inspired by offline reinforcement learning. It has been trained on mixed-quality data without preference labels.\n\n- For OpenChat fine-tuned on Mistral 7B, check out [OpenChat 7B](/models/openchat/openchat-7b).\n- For OpenChat fine-tuned on Llama 8B, check out [OpenChat 8B](/models/openchat/openchat-8b).\n\n#open-source\n\n_These are free, rate-limited endpoints for [OpenChat 3.5 7B](/models/openchat/openchat-7b). Outputs may be cached. Read about rate limits [here](/docs/limits)._","pricing":{"prompt":"0","completion":"0","image":"0","request":"0"},"context_length":8192,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"openchat"},"top_provider":{"max_completion_tokens":4096,"is_moderated":false},"per_request_limits":null},{"id":"openchat/openchat-7b","name":"OpenChat 3.5 7B","created":1701129600,"description":"OpenChat 7B is a library of open-source language models, fine-tuned with \"C-RLFT (Conditioned Reinforcement Learning Fine-Tuning)\" - a strategy inspired by offline reinforcement learning. It has been trained on mixed-quality data without preference labels.\n\n- For OpenChat fine-tuned on Mistral 7B, check out [OpenChat 7B](/models/openchat/openchat-7b).\n- For OpenChat fine-tuned on Llama 8B, check out [OpenChat 8B](/models/openchat/openchat-8b).\n\n#open-source","pricing":{"prompt":"0.00000006","completion":"0.00000006","image":"0","request":"0"},"context_length":8192,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"openchat"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"neversleep/noromaid-20b","name":"Noromaid 20B","created":1700956800,"description":"A collab between IkariDev and Undi. This merge is suitable for RP, ERP, and general knowledge.\n\n#merge #uncensored","pricing":{"prompt":"0.0000015","completion":"0.00000225","image":"0","request":"0"},"context_length":8192,"architecture":{"modality":"text->text","tokenizer":"Llama2","instruct_type":"alpaca"},"top_provider":{"max_completion_tokens":2048,"is_moderated":false},"per_request_limits":null},{"id":"anthropic/claude-instant-1.1","name":"Anthropic: Claude Instant v1.1","created":1700611200,"description":"Anthropic's model for low-latency, high throughput text generation. Supports hundreds of pages of text.","pricing":{"prompt":"0.0000008","completion":"0.0000024","image":"0","request":"0"},"context_length":100000,"architecture":{"modality":"text->text","tokenizer":"Claude","instruct_type":"claude"},"top_provider":{"max_completion_tokens":2048,"is_moderated":true},"per_request_limits":null},{"id":"anthropic/claude-2.1","name":"Anthropic: Claude v2.1","created":1700611200,"description":"Claude 2 delivers advancements in key capabilities for enterprises—including an industry-leading 200K token context window, significant reductions in rates of model hallucination, system prompts and a new beta feature: tool use.","pricing":{"prompt":"0.000008","completion":"0.000024","image":"0","request":"0"},"context_length":200000,"architecture":{"modality":"text->text","tokenizer":"Claude","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":true},"per_request_limits":null},{"id":"anthropic/claude-2.1:beta","name":"Anthropic: Claude v2.1 (self-moderated)","created":1700611200,"description":"Claude 2 delivers advancements in key capabilities for enterprises—including an industry-leading 200K token context window, significant reductions in rates of model hallucination, system prompts and a new beta feature: tool use.\n\n_This is a faster endpoint, made available in collaboration with Anthropic, that is self-moderated: response moderation happens on the model's side instead of OpenRouter's. For requests that pass moderation, it's identical to the [Standard](/models/anthropic/claude-2.1) variant._","pricing":{"prompt":"0.000008","completion":"0.000024","image":"0","request":"0"},"context_length":200000,"architecture":{"modality":"text->text","tokenizer":"Claude","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":false},"per_request_limits":null},{"id":"anthropic/claude-2","name":"Anthropic: Claude v2","created":1700611200,"description":"Claude 2 delivers advancements in key capabilities for enterprises—including an industry-leading 200K token context window, significant reductions in rates of model hallucination, system prompts and a new beta feature: tool use.","pricing":{"prompt":"0.000008","completion":"0.000024","image":"0","request":"0"},"context_length":200000,"architecture":{"modality":"text->text","tokenizer":"Claude","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":true},"per_request_limits":null},{"id":"anthropic/claude-2:beta","name":"Anthropic: Claude v2 (self-moderated)","created":1700611200,"description":"Claude 2 delivers advancements in key capabilities for enterprises—including an industry-leading 200K token context window, significant reductions in rates of model hallucination, system prompts and a new beta feature: tool use.\n\n_This is a faster endpoint, made available in collaboration with Anthropic, that is self-moderated: response moderation happens on the model's side instead of OpenRouter's. For requests that pass moderation, it's identical to the [Standard](/models/anthropic/claude-2) variant._","pricing":{"prompt":"0.000008","completion":"0.000024","image":"0","request":"0"},"context_length":200000,"architecture":{"modality":"text->text","tokenizer":"Claude","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":false},"per_request_limits":null},{"id":"teknium/openhermes-2.5-mistral-7b","name":"OpenHermes 2.5 Mistral 7B","created":1700438400,"description":"A continuation of [OpenHermes 2 model](/models/teknium/openhermes-2-mistral-7b), trained on additional code datasets.\nPotentially the most interesting finding from training on a good ratio (est. of around 7-14% of the total dataset) of code instruction was that it has boosted several non-code benchmarks, including TruthfulQA, AGIEval, and GPT4All suite. It did however reduce BigBench benchmark score, but the net gain overall is significant.","pricing":{"prompt":"0.00000017","completion":"0.00000017","image":"0","request":"0"},"context_length":4096,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"chatml"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"openai/gpt-4-vision-preview","name":"OpenAI: GPT-4 Vision","created":1699833600,"description":"Ability to understand images, in addition to all other [GPT-4 Turbo capabilties](/models/openai/gpt-4-turbo). Training data: up to Apr 2023.\n\n**Note:** heavily rate limited by OpenAI while in preview.\n\n#multimodal","pricing":{"prompt":"0.00001","completion":"0.00003","image":"0.01445","request":"0"},"context_length":128000,"architecture":{"modality":"text+image->text","tokenizer":"GPT","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":true},"per_request_limits":null},{"id":"lizpreciatior/lzlv-70b-fp16-hf","name":"lzlv 70B","created":1699747200,"description":"A Mythomax/MLewd_13B-style merge of selected 70B models.\nA multi-model merge of several LLaMA2 70B finetunes for roleplaying and creative work. The goal was to create a model that combines creativity with intelligence for an enhanced experience.\n\n#merge #uncensored","pricing":{"prompt":"0.00000058","completion":"0.00000078","image":"0","request":"0"},"context_length":4096,"architecture":{"modality":"text->text","tokenizer":"Llama2","instruct_type":"airoboros"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"alpindale/goliath-120b","name":"Goliath 120B","created":1699574400,"description":"A large LLM created by combining two fine-tuned Llama 70B models into one 120B model. Combines Xwin and Euryale.\n\nCredits to\n- [@chargoddard](https://huggingface.co/chargoddard) for developing the framework used to merge the model - [mergekit](https://github.com/cg123/mergekit).\n- [@Undi95](https://huggingface.co/Undi95) for helping with the merge ratios.\n\n#merge","pricing":{"prompt":"0.000009375","completion":"0.000009375","image":"0","request":"0"},"context_length":6144,"architecture":{"modality":"text->text","tokenizer":"Llama2","instruct_type":"airoboros"},"top_provider":{"max_completion_tokens":400,"is_moderated":false},"per_request_limits":null},{"id":"undi95/toppy-m-7b:free","name":"Toppy M 7B (free)","created":1699574400,"description":"A wild 7B parameter model that merges several models using the new task_arithmetic merge method from mergekit.\nList of merged models:\n- NousResearch/Nous-Capybara-7B-V1.9\n- [HuggingFaceH4/zephyr-7b-beta](/models/huggingfaceh4/zephyr-7b-beta)\n- lemonilia/AshhLimaRP-Mistral-7B\n- Vulkane/120-Days-of-Sodom-LoRA-Mistral-7b\n- Undi95/Mistral-pippa-sharegpt-7b-qlora\n\n#merge #uncensored\n\n_These are free, rate-limited endpoints for [Toppy M 7B](/models/undi95/toppy-m-7b). Outputs may be cached. Read about rate limits [here](/docs/limits)._","pricing":{"prompt":"0","completion":"0","image":"0","request":"0"},"context_length":4096,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"alpaca"},"top_provider":{"max_completion_tokens":2048,"is_moderated":false},"per_request_limits":null},{"id":"undi95/toppy-m-7b","name":"Toppy M 7B","created":1699574400,"description":"A wild 7B parameter model that merges several models using the new task_arithmetic merge method from mergekit.\nList of merged models:\n- NousResearch/Nous-Capybara-7B-V1.9\n- [HuggingFaceH4/zephyr-7b-beta](/models/huggingfaceh4/zephyr-7b-beta)\n- lemonilia/AshhLimaRP-Mistral-7B\n- Vulkane/120-Days-of-Sodom-LoRA-Mistral-7b\n- Undi95/Mistral-pippa-sharegpt-7b-qlora\n\n#merge #uncensored","pricing":{"prompt":"0.00000007","completion":"0.00000007","image":"0","request":"0"},"context_length":4096,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"alpaca"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"undi95/toppy-m-7b:nitro","name":"Toppy M 7B (nitro)","created":1699574400,"description":"A wild 7B parameter model that merges several models using the new task_arithmetic merge method from mergekit.\nList of merged models:\n- NousResearch/Nous-Capybara-7B-V1.9\n- [HuggingFaceH4/zephyr-7b-beta](/models/huggingfaceh4/zephyr-7b-beta)\n- lemonilia/AshhLimaRP-Mistral-7B\n- Vulkane/120-Days-of-Sodom-LoRA-Mistral-7b\n- Undi95/Mistral-pippa-sharegpt-7b-qlora\n\n#merge #uncensored\n\n_These are higher-throughput endpoints for [Toppy M 7B](/models/undi95/toppy-m-7b). They may have higher prices._","pricing":{"prompt":"0.00000007","completion":"0.00000007","image":"0","request":"0"},"context_length":4096,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"alpaca"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"openrouter/auto","name":"Auto (best for prompt)","created":1699401600,"description":"Depending on their size, subject, and complexity, your prompts will be sent to [Llama 3 70B Instruct](/models/meta-llama/llama-3-70b-instruct), [Claude 3.5 Sonnet (self-moderated)](/models/anthropic/claude-3.5-sonnet:beta) or [GPT-4o](/models/openai/gpt-4o). To see which model was used, visit [Activity](/activity).\n\nA major redesign of this router is coming soon. Stay tuned on [Discord](https://discord.gg/fVyRaUDgxW) for updates.","pricing":{"prompt":"-1","completion":"-1","request":"-1","image":"-1"},"context_length":200000,"architecture":{"modality":"text->text","tokenizer":"Router","instruct_type":null},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"openai/gpt-4-1106-preview","name":"OpenAI: GPT-4 Turbo (older v1106)","created":1699228800,"description":"The latest GPT-4 Turbo model with vision capabilities. Vision requests can now use JSON mode and function calling.\n\nTraining data: up to April 2023.","pricing":{"prompt":"0.00001","completion":"0.00003","image":"0","request":"0"},"context_length":128000,"architecture":{"modality":"text->text","tokenizer":"GPT","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":true},"per_request_limits":null},{"id":"openai/gpt-3.5-turbo-1106","name":"OpenAI: GPT-3.5 Turbo 16k (older v1106)","created":1699228800,"description":"An older GPT-3.5 Turbo model with improved instruction following, JSON mode, reproducible outputs, parallel function calling, and more. Training data: up to Sep 2021.","pricing":{"prompt":"0.000001","completion":"0.000002","image":"0","request":"0"},"context_length":16385,"architecture":{"modality":"text->text","tokenizer":"GPT","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":true},"per_request_limits":null},{"id":"google/palm-2-codechat-bison-32k","name":"Google: PaLM 2 Code Chat 32k","created":1698969600,"description":"PaLM 2 fine-tuned for chatbot conversations that help with code-related questions.","pricing":{"prompt":"0.00000025","completion":"0.0000005","image":"0","request":"0"},"context_length":131040,"architecture":{"modality":"text->text","tokenizer":"PaLM","instruct_type":null},"top_provider":{"max_completion_tokens":32768,"is_moderated":false},"per_request_limits":null},{"id":"google/palm-2-chat-bison-32k","name":"Google: PaLM 2 Chat 32k","created":1698969600,"description":"PaLM 2 is a language model by Google with improved multilingual, reasoning and coding capabilities.","pricing":{"prompt":"0.00000025","completion":"0.0000005","image":"0","request":"0"},"context_length":131040,"architecture":{"modality":"text->text","tokenizer":"PaLM","instruct_type":null},"top_provider":{"max_completion_tokens":32768,"is_moderated":false},"per_request_limits":null},{"id":"teknium/openhermes-2-mistral-7b","name":"OpenHermes 2 Mistral 7B","created":1698796800,"description":"Trained on 900k instructions, surpasses all previous versions of Hermes 13B and below, and matches 70B on some benchmarks. Hermes 2 has strong multiturn chat skills and system prompt capabilities.","pricing":{"prompt":"0.00000018","completion":"0.00000018","image":"0","request":"0"},"context_length":8192,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"chatml"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"open-orca/mistral-7b-openorca","name":"Mistral OpenOrca 7B","created":1698624000,"description":"A fine-tune of Mistral using the OpenOrca dataset. First 7B model to beat all other models <30B.","pricing":{"prompt":"0.00000018","completion":"0.00000018","image":"0","request":"0"},"context_length":8192,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"chatml"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"jondurbin/airoboros-l2-70b","name":"Airoboros 70B","created":1698537600,"description":"A Llama 2 70B fine-tune using synthetic data (the Airoboros dataset).\n\nCurrently based on [jondurbin/airoboros-l2-70b](https://huggingface.co/jondurbin/airoboros-l2-70b-2.2.1), but might get updated in the future.","pricing":{"prompt":"0.0000005","completion":"0.0000005","image":"0","request":"0"},"context_length":4096,"architecture":{"modality":"text->text","tokenizer":"Llama2","instruct_type":"airoboros"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"xwin-lm/xwin-lm-70b","name":"Xwin 70B","created":1697328000,"description":"Xwin-LM aims to develop and open-source alignment tech for LLMs. Our first release, built-upon on the [Llama2](/models/${Model.Llama_2_13B_Chat}) base models, ranked TOP-1 on AlpacaEval. Notably, it's the first to surpass [GPT-4](/models/${Model.GPT_4}) on this benchmark. The project will be continuously updated.","pricing":{"prompt":"0.00000375","completion":"0.00000375","image":"0","request":"0"},"context_length":8192,"architecture":{"modality":"text->text","tokenizer":"Llama2","instruct_type":"airoboros"},"top_provider":{"max_completion_tokens":400,"is_moderated":false},"per_request_limits":null},{"id":"mistralai/mistral-7b-instruct-v0.1","name":"Mistral: Mistral 7B Instruct v0.1","created":1695859200,"description":"A 7.3B parameter model that outperforms Llama 2 13B on all benchmarks, with optimizations for speed and context length.","pricing":{"prompt":"0.00000006","completion":"0.00000006","image":"0","request":"0"},"context_length":4096,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"mistral"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"openai/gpt-3.5-turbo-instruct","name":"OpenAI: GPT-3.5 Turbo Instruct","created":1695859200,"description":"This model is a variant of GPT-3.5 Turbo tuned for instructional prompts and omitting chat-related optimizations. Training data: up to Sep 2021.","pricing":{"prompt":"0.0000015","completion":"0.000002","image":"0","request":"0"},"context_length":4095,"architecture":{"modality":"text->text","tokenizer":"GPT","instruct_type":"chatml"},"top_provider":{"max_completion_tokens":4096,"is_moderated":true},"per_request_limits":null},{"id":"pygmalionai/mythalion-13b","name":"Pygmalion: Mythalion 13B","created":1693612800,"description":"A blend of the new Pygmalion-13b and MythoMax. #merge","pricing":{"prompt":"0.000001125","completion":"0.000001125","image":"0","request":"0"},"context_length":8192,"architecture":{"modality":"text->text","tokenizer":"Llama2","instruct_type":"alpaca"},"top_provider":{"max_completion_tokens":400,"is_moderated":false},"per_request_limits":null},{"id":"openai/gpt-4-32k-0314","name":"OpenAI: GPT-4 32k (older v0314)","created":1693180800,"description":"GPT-4-32k is an extended version of GPT-4, with the same capabilities but quadrupled context length, allowing for processing up to 40 pages of text in a single pass. This is particularly beneficial for handling longer content like interacting with PDFs without an external vector database. Training data: up to Sep 2021.","pricing":{"prompt":"0.00006","completion":"0.00012","image":"0","request":"0"},"context_length":32767,"architecture":{"modality":"text->text","tokenizer":"GPT","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":true},"per_request_limits":null},{"id":"openai/gpt-4-32k","name":"OpenAI: GPT-4 32k","created":1693180800,"description":"GPT-4-32k is an extended version of GPT-4, with the same capabilities but quadrupled context length, allowing for processing up to 40 pages of text in a single pass. This is particularly beneficial for handling longer content like interacting with PDFs without an external vector database. Training data: up to Sep 2021.","pricing":{"prompt":"0.00006","completion":"0.00012","image":"0","request":"0"},"context_length":32767,"architecture":{"modality":"text->text","tokenizer":"GPT","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":true},"per_request_limits":null},{"id":"openai/gpt-3.5-turbo-16k","name":"OpenAI: GPT-3.5 Turbo 16k","created":1693180800,"description":"This model offers four times the context length of gpt-3.5-turbo, allowing it to support approximately 20 pages of text in a single request at a higher cost. Training data: up to Sep 2021.","pricing":{"prompt":"0.000003","completion":"0.000004","image":"0","request":"0"},"context_length":16385,"architecture":{"modality":"text->text","tokenizer":"GPT","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":true},"per_request_limits":null},{"id":"nousresearch/nous-hermes-llama2-13b","name":"Nous: Hermes 13B","created":1692489600,"description":"A state-of-the-art language model fine-tuned on over 300k instructions by Nous Research, with Teknium and Emozilla leading the fine tuning process.","pricing":{"prompt":"0.00000017","completion":"0.00000017","image":"0","request":"0"},"context_length":4096,"architecture":{"modality":"text->text","tokenizer":"Llama2","instruct_type":"alpaca"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"phind/phind-codellama-34b","name":"Phind: CodeLlama 34B v2","created":1692489600,"description":"A fine-tune of CodeLlama-34B on an internal dataset that helps it exceed GPT-4 on some benchmarks, including HumanEval.","pricing":{"prompt":"0.00000072","completion":"0.00000072","image":"0","request":"0"},"context_length":4096,"architecture":{"modality":"text->text","tokenizer":"Llama2","instruct_type":"alpaca"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"meta-llama/codellama-34b-instruct","name":"Meta: CodeLlama 34B Instruct","created":1692489600,"description":"Code Llama is built upon Llama 2 and excels at filling in code, handling extensive input contexts, and following programming instructions without prior training for various programming tasks.","pricing":{"prompt":"0.00000072","completion":"0.00000072","image":"0","request":"0"},"context_length":8192,"architecture":{"modality":"text->text","tokenizer":"Llama2","instruct_type":"llama2"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"huggingfaceh4/zephyr-7b-beta:free","name":"Hugging Face: Zephyr 7B (free)","created":1690934400,"description":"Zephyr is a series of language models that are trained to act as helpful assistants. Zephyr-7B-β is the second model in the series, and is a fine-tuned version of [mistralai/Mistral-7B-v0.1](/models/mistralai/mistral-7b-instruct-v0.1) that was trained on a mix of publicly available, synthetic datasets using Direct Preference Optimization (DPO).\n\n_These are free, rate-limited endpoints for [Zephyr 7B](/models/huggingfaceh4/zephyr-7b-beta). Outputs may be cached. Read about rate limits [here](/docs/limits)._","pricing":{"prompt":"0","completion":"0","image":"0","request":"0"},"context_length":4096,"architecture":{"modality":"text->text","tokenizer":"Mistral","instruct_type":"zephyr"},"top_provider":{"max_completion_tokens":2048,"is_moderated":false},"per_request_limits":null},{"id":"mancer/weaver","name":"Mancer: Weaver (alpha)","created":1690934400,"description":"An attempt to recreate Claude-style verbosity, but don't expect the same level of coherence or memory. Meant for use in roleplay/narrative situations.","pricing":{"prompt":"0.000001875","completion":"0.00000225","image":"0","request":"0"},"context_length":8000,"architecture":{"modality":"text->text","tokenizer":"Llama2","instruct_type":"alpaca"},"top_provider":{"max_completion_tokens":1000,"is_moderated":false},"per_request_limits":null},{"id":"anthropic/claude-instant-1.0","name":"Anthropic: Claude Instant v1.0","created":1690502400,"description":"Anthropic's model for low-latency, high throughput text generation. Supports hundreds of pages of text.","pricing":{"prompt":"0.0000008","completion":"0.0000024","image":"0","request":"0"},"context_length":100000,"architecture":{"modality":"text->text","tokenizer":"Claude","instruct_type":"claude"},"top_provider":{"max_completion_tokens":4096,"is_moderated":true},"per_request_limits":null},{"id":"anthropic/claude-1.2","name":"Anthropic: Claude v1.2","created":1690502400,"description":"Anthropic's model for low-latency, high throughput text generation. Supports hundreds of pages of text.","pricing":{"prompt":"0.000008","completion":"0.000024","image":"0","request":"0"},"context_length":100000,"architecture":{"modality":"text->text","tokenizer":"Claude","instruct_type":"claude"},"top_provider":{"max_completion_tokens":4096,"is_moderated":true},"per_request_limits":null},{"id":"anthropic/claude-1","name":"Anthropic: Claude v1","created":1690502400,"description":"Anthropic's model for low-latency, high throughput text generation. Supports hundreds of pages of text.","pricing":{"prompt":"0.000008","completion":"0.000024","image":"0","request":"0"},"context_length":100000,"architecture":{"modality":"text->text","tokenizer":"Claude","instruct_type":"claude"},"top_provider":{"max_completion_tokens":4096,"is_moderated":true},"per_request_limits":null},{"id":"anthropic/claude-instant-1","name":"Anthropic: Claude Instant v1","created":1690502400,"description":"Anthropic's model for low-latency, high throughput text generation. Supports hundreds of pages of text.","pricing":{"prompt":"0.0000008","completion":"0.0000024","image":"0","request":"0"},"context_length":100000,"architecture":{"modality":"text->text","tokenizer":"Claude","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":true},"per_request_limits":null},{"id":"anthropic/claude-instant-1:beta","name":"Anthropic: Claude Instant v1 (self-moderated)","created":1690502400,"description":"Anthropic's model for low-latency, high throughput text generation. Supports hundreds of pages of text.\n\n_This is a faster endpoint, made available in collaboration with Anthropic, that is self-moderated: response moderation happens on the model's side instead of OpenRouter's. For requests that pass moderation, it's identical to the [Standard](/models/anthropic/claude-instant-1) variant._","pricing":{"prompt":"0.0000008","completion":"0.0000024","image":"0","request":"0"},"context_length":100000,"architecture":{"modality":"text->text","tokenizer":"Claude","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":false},"per_request_limits":null},{"id":"anthropic/claude-2.0","name":"Anthropic: Claude v2.0","created":1690502400,"description":"Anthropic's flagship model. Superior performance on tasks that require complex reasoning. Supports hundreds of pages of text.","pricing":{"prompt":"0.000008","completion":"0.000024","image":"0","request":"0"},"context_length":100000,"architecture":{"modality":"text->text","tokenizer":"Claude","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":true},"per_request_limits":null},{"id":"anthropic/claude-2.0:beta","name":"Anthropic: Claude v2.0 (self-moderated)","created":1690502400,"description":"Anthropic's flagship model. Superior performance on tasks that require complex reasoning. Supports hundreds of pages of text.\n\n_This is a faster endpoint, made available in collaboration with Anthropic, that is self-moderated: response moderation happens on the model's side instead of OpenRouter's. For requests that pass moderation, it's identical to the [Standard](/models/anthropic/claude-2.0) variant._","pricing":{"prompt":"0.000008","completion":"0.000024","image":"0","request":"0"},"context_length":100000,"architecture":{"modality":"text->text","tokenizer":"Claude","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":false},"per_request_limits":null},{"id":"undi95/remm-slerp-l2-13b","name":"ReMM SLERP 13B","created":1689984000,"description":"A recreation trial of the original MythoMax-L2-B13 but with updated models. #merge","pricing":{"prompt":"0.00000027","completion":"0.00000027","image":"0","request":"0"},"context_length":4096,"architecture":{"modality":"text->text","tokenizer":"Llama2","instruct_type":"alpaca"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"undi95/remm-slerp-l2-13b:extended","name":"ReMM SLERP 13B (extended)","created":1689984000,"description":"A recreation trial of the original MythoMax-L2-B13 but with updated models. #merge\n\n_These are extended-context endpoints for [ReMM SLERP 13B](/models/undi95/remm-slerp-l2-13b). They may have higher prices._","pricing":{"prompt":"0.000001125","completion":"0.000001125","image":"0","request":"0"},"context_length":6144,"architecture":{"modality":"text->text","tokenizer":"Llama2","instruct_type":"alpaca"},"top_provider":{"max_completion_tokens":400,"is_moderated":false},"per_request_limits":null},{"id":"google/palm-2-codechat-bison","name":"Google: PaLM 2 Code Chat","created":1689811200,"description":"PaLM 2 fine-tuned for chatbot conversations that help with code-related questions.","pricing":{"prompt":"0.00000025","completion":"0.0000005","image":"0","request":"0"},"context_length":28672,"architecture":{"modality":"text->text","tokenizer":"PaLM","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":false},"per_request_limits":null},{"id":"google/palm-2-chat-bison","name":"Google: PaLM 2 Chat","created":1689811200,"description":"PaLM 2 is a language model by Google with improved multilingual, reasoning and coding capabilities.","pricing":{"prompt":"0.00000025","completion":"0.0000005","image":"0","request":"0"},"context_length":36864,"architecture":{"modality":"text->text","tokenizer":"PaLM","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":false},"per_request_limits":null},{"id":"gryphe/mythomax-l2-13b","name":"MythoMax 13B","created":1688256000,"description":"One of the highest performing and most popular fine-tunes of Llama 2 13B, with rich descriptions and roleplay. #merge","pricing":{"prompt":"0.0000001","completion":"0.0000001","image":"0","request":"0"},"context_length":4096,"architecture":{"modality":"text->text","tokenizer":"Llama2","instruct_type":"alpaca"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"gryphe/mythomax-l2-13b:nitro","name":"MythoMax 13B (nitro)","created":1688256000,"description":"One of the highest performing and most popular fine-tunes of Llama 2 13B, with rich descriptions and roleplay. #merge\n\n_These are higher-throughput endpoints for [MythoMax 13B](/models/gryphe/mythomax-l2-13b). They may have higher prices._","pricing":{"prompt":"0.0000002","completion":"0.0000002","image":"0","request":"0"},"context_length":4096,"architecture":{"modality":"text->text","tokenizer":"Llama2","instruct_type":"alpaca"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"gryphe/mythomax-l2-13b:extended","name":"MythoMax 13B (extended)","created":1688256000,"description":"One of the highest performing and most popular fine-tunes of Llama 2 13B, with rich descriptions and roleplay. #merge\n\n_These are extended-context endpoints for [MythoMax 13B](/models/gryphe/mythomax-l2-13b). They may have higher prices._","pricing":{"prompt":"0.000001125","completion":"0.000001125","image":"0","request":"0"},"context_length":8192,"architecture":{"modality":"text->text","tokenizer":"Llama2","instruct_type":"alpaca"},"top_provider":{"max_completion_tokens":400,"is_moderated":false},"per_request_limits":null},{"id":"meta-llama/llama-2-70b-chat","name":"Meta: Llama v2 70B Chat","created":1687219200,"description":"The flagship, 70 billion parameter language model from Meta, fine tuned for chat completions. Llama 2 is an auto-regressive language model that uses an optimized transformer architecture. The tuned versions use supervised fine-tuning (SFT) and reinforcement learning with human feedback (RLHF) to align to human preferences for helpfulness and safety.","pricing":{"prompt":"0.00000081","completion":"0.00000081","image":"0","request":"0"},"context_length":4096,"architecture":{"modality":"text->text","tokenizer":"Llama2","instruct_type":"llama2"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"meta-llama/llama-2-13b-chat","name":"Meta: Llama v2 13B Chat","created":1687219200,"description":"A 13 billion parameter language model from Meta, fine tuned for chat completions","pricing":{"prompt":"0.00000027","completion":"0.00000027","image":"0","request":"0"},"context_length":4096,"architecture":{"modality":"text->text","tokenizer":"Llama2","instruct_type":"llama2"},"top_provider":{"max_completion_tokens":0,"is_moderated":false},"per_request_limits":null},{"id":"openai/gpt-4-0314","name":"OpenAI: GPT-4 (older v0314)","created":1685232000,"description":"GPT-4-0314 is the first version of GPT-4 released, with a context length of 8,192 tokens, and was supported until June 14. Training data: up to Sep 2021.","pricing":{"prompt":"0.00003","completion":"0.00006","image":"0","request":"0"},"context_length":8191,"architecture":{"modality":"text->text","tokenizer":"GPT","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":true},"per_request_limits":null},{"id":"openai/gpt-4","name":"OpenAI: GPT-4","created":1685232000,"description":"OpenAI's flagship model, GPT-4 is a large-scale multimodal language model capable of solving difficult problems with greater accuracy than previous models due to its broader general knowledge and advanced reasoning capabilities. Training data: up to Sep 2021.","pricing":{"prompt":"0.00003","completion":"0.00006","image":"0","request":"0"},"context_length":8191,"architecture":{"modality":"text->text","tokenizer":"GPT","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":true},"per_request_limits":null},{"id":"openai/gpt-3.5-turbo-0301","name":"OpenAI: GPT-3.5 Turbo (older v0301)","created":1685232000,"description":"GPT-3.5 Turbo is OpenAI's fastest model. It can understand and generate natural language or code, and is optimized for chat and traditional completion tasks.\n\nTraining data up to Sep 2021.","pricing":{"prompt":"0.000001","completion":"0.000002","image":"0","request":"0"},"context_length":4095,"architecture":{"modality":"text->text","tokenizer":"GPT","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":true},"per_request_limits":null},{"id":"openai/gpt-3.5-turbo-0125","name":"OpenAI: GPT-3.5 Turbo 16k","created":1685232000,"description":"The latest GPT-3.5 Turbo model with improved instruction following, JSON mode, reproducible outputs, parallel function calling, and more. Training data: up to Sep 2021.\n\nThis version has a higher accuracy at responding in requested formats and a fix for a bug which caused a text encoding issue for non-English language function calls.","pricing":{"prompt":"0.0000005","completion":"0.0000015","image":"0","request":"0"},"context_length":16385,"architecture":{"modality":"text->text","tokenizer":"GPT","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":true},"per_request_limits":null},{"id":"openai/gpt-3.5-turbo","name":"OpenAI: GPT-3.5 Turbo","created":1685232000,"description":"GPT-3.5 Turbo is OpenAI's fastest model. It can understand and generate natural language or code, and is optimized for chat and traditional completion tasks.\n\nTraining data up to Sep 2021.","pricing":{"prompt":"0.0000005","completion":"0.0000015","image":"0","request":"0"},"context_length":16385,"architecture":{"modality":"text->text","tokenizer":"GPT","instruct_type":null},"top_provider":{"max_completion_tokens":4096,"is_moderated":true},"per_request_limits":null}]} \ No newline at end of file diff --git a/src/data/readme.md b/src/data/readme.md new file mode 100644 index 000000000..f125b082e --- /dev/null +++ b/src/data/readme.md @@ -0,0 +1,2 @@ +update models.json at +https://openrouter.ai/api/v1/models \ No newline at end of file diff --git a/src/store/config-slice.ts b/src/store/config-slice.ts index cc0ba57e2..c9a8258c2 100644 --- a/src/store/config-slice.ts +++ b/src/store/config-slice.ts @@ -1,7 +1,8 @@ import { StoreSlice } from './store'; import { Theme } from '@type/theme'; -import { ConfigInterface, ModelOptions, TotalTokenUsed } from '@type/chat'; -import { _defaultChatConfig, _defaultSystemMessage,_defaultMenuWidth, defaultModel } from '@constants/chat'; +import { _defaultChatConfig, _defaultSystemMessage,_defaultMenuWidth, defaultModel, _defaultImageDetail, _defaultDisplayChatSize } from '@constants/chat'; +import { ConfigInterface, ImageDetail, TotalTokenUsed } from '@type/chat'; +import { ModelOptions } from '@utils/modelReader'; export interface ConfigSlice { openConfig: boolean; @@ -20,6 +21,7 @@ export interface ConfigSlice { totalTokenUsed: TotalTokenUsed; menuWidth: number; displayChatSize: boolean; + defaultImageDetail: ImageDetail; setOpenConfig: (openConfig: boolean) => void; setTheme: (theme: Theme) => void; setAutoTitle: (autoTitle: boolean) => void; @@ -36,6 +38,7 @@ export interface ConfigSlice { setTotalTokenUsed: (totalTokenUsed: TotalTokenUsed) => void; setMenuWidth: (menuWidth: number) => void; setDisplayChatSize: (displayChatSize: boolean) => void; + setDefaultImageDetail: (imageDetail: ImageDetail) => void; } export const createConfigSlice: StoreSlice = (set, get) => ({ @@ -54,7 +57,8 @@ export const createConfigSlice: StoreSlice = (set, get) => ({ countTotalTokens: false, totalTokenUsed: {}, menuWidth: _defaultMenuWidth, - displayChatSize: false, + displayChatSize: _defaultDisplayChatSize, + defaultImageDetail: _defaultImageDetail, setOpenConfig: (openConfig: boolean) => { set((prev: ConfigSlice) => ({ ...prev, @@ -151,4 +155,10 @@ export const createConfigSlice: StoreSlice = (set, get) => ({ displayChatSize: displayChatSize, })); }, + setDefaultImageDetail: (imageDetail: ImageDetail) => { + set((prev: ConfigSlice) => ({ + ...prev, + defaultImageDetail: imageDetail, + })); + }, }); diff --git a/src/store/migrate.ts b/src/store/migrate.ts index c44d02177..df1a34e2b 100644 --- a/src/store/migrate.ts +++ b/src/store/migrate.ts @@ -14,6 +14,7 @@ import { LocalStorageInterfaceV8_1ToV8_2, LocalStorageInterfaceV8oV8_1, TextContentInterface, + LocalStorageInterfaceV8_2ToV9, } from '@type/chat'; import { _defaultChatConfig, @@ -22,6 +23,7 @@ import { defaultApiVersion, defaultModel, defaultUserMaxToken, + _defaultImageDetail, } from '@constants/chat'; import { officialAPIEndpoint } from '@constants/auth'; import defaultPrompts from '@constants/prompt'; @@ -128,4 +130,10 @@ export const migrateV8_1 = (persistedState: LocalStorageInterfaceV8oV8_1) => { export const migrateV8_1_fix = (persistedState: LocalStorageInterfaceV8_1ToV8_2) => { persistedState.menuWidth = _defaultMenuWidth; persistedState.displayChatSize = _defaultDisplayChatSize; +}; + +export const migrateV8_2 = (persistedState: LocalStorageInterfaceV8_2ToV9) => { + persistedState.chats.forEach((chat) => { + if (chat.imageDetail == undefined) chat.imageDetail = _defaultImageDetail + }); }; \ No newline at end of file diff --git a/src/store/store.ts b/src/store/store.ts index d3a2931ec..b71f9c1c0 100644 --- a/src/store/store.ts +++ b/src/store/store.ts @@ -17,6 +17,7 @@ import { LocalStorageInterfaceV7oV8, LocalStorageInterfaceV8_1ToV8_2, LocalStorageInterfaceV8oV8_1, + LocalStorageInterfaceV8_2ToV9, } from '@type/chat'; import { migrateV0, @@ -29,6 +30,7 @@ import { migrateV7, migrateV8_1, migrateV8_1_fix, + migrateV8_2, } from './migrate'; export type StoreState = ChatSlice & @@ -66,6 +68,7 @@ export const createPartializedState = (state: StoreState) => ({ countTotalTokens: state.countTotalTokens, displayChatSize: state.displayChatSize, menuWidth: state.menuWidth, + defaultImageDetail: state.defaultImageDetail, }); const useStore = create()( @@ -81,7 +84,7 @@ const useStore = create()( { name: 'free-chat-gpt', partialize: (state) => createPartializedState(state), - version: 8.2, + version: 9, migrate: (persistedState, version) => { switch (version) { case 0: @@ -106,6 +109,9 @@ const useStore = create()( case 8.1: migrateV8_1_fix(persistedState as LocalStorageInterfaceV8_1ToV8_2); break; + case 8.2: + migrateV8_2(persistedState as LocalStorageInterfaceV8_2ToV9); + break; } return persistedState as StoreState; }, diff --git a/src/types/chat.ts b/src/types/chat.ts index 19542bb5e..1c4d12d26 100644 --- a/src/types/chat.ts +++ b/src/types/chat.ts @@ -1,3 +1,4 @@ +import { ModelOptions } from '@utils/modelReader'; import { Prompt } from './prompt'; import { Theme } from './theme'; @@ -53,6 +54,7 @@ export interface ChatInterface { messages: MessageInterface[]; config: ConfigInterface; titleSet: boolean; + imageDetail: ImageDetail; } export interface ConfigInterface { @@ -87,28 +89,6 @@ export interface Folder { color?: string; } -export type ModelOptions = - | 'gpt-4o-mini' - | 'gpt-4o-mini-2024-07-18' - | 'gpt-4o' - | 'gpt-4o-2024-05-13' - | 'gpt-4o-2024-08-06' - | 'gpt-4-vision-preview' - | 'gpt-4' - | 'gpt-4-32k' - | 'gpt-4-1106-preview' - | 'gpt-4-0125-preview' - | 'gpt-4-turbo' - | 'gpt-4-turbo-2024-04-09' - | 'gpt-3.5-turbo' - | 'gpt-3.5-turbo-16k' - | 'gpt-3.5-turbo-1106' - | 'gpt-3.5-turbo-0125'; -// | 'gpt-3.5-turbo-0301'; -// | 'gpt-4-0314' -// | 'gpt-4-32k-0314' - -export type ModelType = 'text' | 'image'; interface Pricing { price: number; unit: number; @@ -117,6 +97,7 @@ interface Pricing { interface CostDetails { prompt: Pricing; completion: Pricing; + image: Pricing; } export interface ModelCost { @@ -127,6 +108,7 @@ export type TotalTokenUsed = { [model in ModelOptions]?: { promptTokens: number; completionTokens: number; + imageTokens: number; }; }; export interface LocalStorageInterfaceV0ToV1 { @@ -227,5 +209,10 @@ export interface LocalStorageInterfaceV8_1ToV8_2 displayChatSize: boolean; } -// export interface LocalStorageInterfaceV8_2ToV9 -// extends LocalStorageInterfaceV8_1ToV8_2 { +export interface LocalStorageInterfaceV8_2ToV9 + extends LocalStorageInterfaceV8_1ToV8_2 { + defaultImageDetail: ImageDetail; +} + +// export interface LocalStorageInterfaceV9ToV10 +// extends LocalStorageInterfaceV8_2ToV9 { diff --git a/src/utils/import.ts b/src/utils/import.ts index fdf3a042b..ad97f449c 100644 --- a/src/utils/import.ts +++ b/src/utils/import.ts @@ -13,10 +13,11 @@ import { import { roles } from '@type/chat'; import { defaultModel, - modelOptions, _defaultChatConfig, + _defaultImageDetail, } from '@constants/chat'; import { ExportV1, OpenAIChat, OpenAIPlaygroundJSON } from '@type/export'; +import { modelOptions } from '@constants/modelLoader'; export const validateAndFixChats = (chats: any): chats is ChatInterface[] => { if (!Array.isArray(chats)) return false; @@ -218,6 +219,7 @@ export const convertOpenAIToBetterChatGPTFormat = ( messages, config, titleSet: true, + imageDetail: _defaultImageDetail, }; }; diff --git a/src/utils/messageUtils.ts b/src/utils/messageUtils.ts index 25e3dc000..3c7095ccd 100644 --- a/src/utils/messageUtils.ts +++ b/src/utils/messageUtils.ts @@ -1,8 +1,9 @@ -import { MessageInterface, ModelOptions, TextContentInterface, TotalTokenUsed } from '@type/chat'; import useStore from '@store/store'; import { Tiktoken } from '@dqbd/tiktoken/lite'; +import { isImageContent, isTextContent, MessageInterface, TextContentInterface, TotalTokenUsed } from '@type/chat'; +import { ModelOptions } from './modelReader'; const cl100k_base = await import('@dqbd/tiktoken/encoders/cl100k_base.json'); const encoder = new Tiktoken( @@ -97,15 +98,27 @@ export const updateTotalTokenUsed = ( JSON.stringify(useStore.getState().totalTokenUsed) ); - const newPromptTokens = countTokens(promptMessages, model); + // Filter text and image prompts + const textPrompts = promptMessages.filter(e => e.content.some(isTextContent)); + const imgPrompts = promptMessages.filter(e => e.content.some(isImageContent)); + + // Count tokens + const newPromptTokens = countTokens(textPrompts, model); + const newImageTokens = countTokens(imgPrompts, model); const newCompletionTokens = countTokens([completionMessage], model); - const { promptTokens = 0, completionTokens = 0 } = + + // Destructure existing token counts or default to 0 + const { promptTokens = 0, completionTokens = 0, imageTokens = 0 } = updatedTotalTokenUsed[model] ?? {}; + // Update token counts updatedTotalTokenUsed[model] = { promptTokens: promptTokens + newPromptTokens, completionTokens: completionTokens + newCompletionTokens, + imageTokens: imageTokens + newImageTokens }; + + // Set the updated token counts in the store setTotalTokenUsed(updatedTotalTokenUsed); }; diff --git a/src/utils/modelReader.ts b/src/utils/modelReader.ts new file mode 100644 index 000000000..b21da731b --- /dev/null +++ b/src/utils/modelReader.ts @@ -0,0 +1,122 @@ +import { ModelCost } from '@type/chat'; + +interface ModelData { + id: string; + name: string; + description: string; + pricing: { + prompt: string; + completion: string; + image: string; + request: string; + }; + context_length: number; + architecture: { + modality: string; + tokenizer: string; + instruct_type: string | null; + }; + top_provider: { + max_completion_tokens: number; + is_moderated: boolean; + }; + per_request_limits: any; +} + +interface ModelsJson { + data: ModelData[]; +} + +const modelsJsonUrl = '/src/data/models.json'; + +export const loadModels = async (): Promise<{ + modelOptions: string[]; + modelMaxToken: { [key: string]: number }; + modelCost: ModelCost; + modelTypes: { [key: string]: string }; +}> => { + const response = await fetch(modelsJsonUrl); + const modelsJson: ModelsJson = await response.json(); + + const modelOptions: string[] = []; + const modelMaxToken: { [key: string]: number } = {}; + const modelCost: ModelCost = {}; + const modelTypes: { [key: string]: string } = {}; + + // Prepend specific models + const specificModels = [ + { + id: 'gpt-4-0125-preview', + context_length: 128000, + pricing: { + "prompt": "0.00001", + "completion": "0.00003", + "image": "0.01445", + "request": "0" + }, + type: 'text', + }, + { + id: 'gpt-4-turbo-2024-04-09', + context_length: 128000, + pricing: { + "prompt": "0.00001", + "completion": "0.00003", + "image": "0.01445", + "request": "0" + }, + type: 'text', + }, + ]; + + specificModels.forEach((model) => { + modelOptions.push(model.id); + modelMaxToken[model.id] = model.context_length; + modelCost[model.id] = { + prompt: { price: parseFloat(model.pricing.prompt), unit: 1 }, + completion: { price: parseFloat(model.pricing.completion), unit: 1 }, + image: { price: parseFloat(model.pricing.image), unit: 1 }, + }; + modelTypes[model.id] = model.type; + }); + + modelsJson.data.forEach((model) => { + const modelId = model.id.split('/').pop() as string; + modelOptions.push(modelId); + modelMaxToken[modelId] = model.context_length; + modelCost[modelId] = { + prompt: { price: parseFloat(model.pricing.prompt), unit: 1 }, + completion: { price: parseFloat(model.pricing.completion), unit: 1 }, + image: { price: 0, unit: 1 }, // default for no image models + }; + + // Detect image capabilities + if (parseFloat(model.pricing.image) > 0) { + modelTypes[modelId] = 'image'; + modelCost[modelId].image = { + price: parseFloat(model.pricing.image), + unit: 1, + }; + } else { + modelTypes[modelId] = 'text'; + } + }); + + // Sort modelOptions to prioritize gpt-4o models at the top, followed by other OpenAI models + modelOptions.sort((a, b) => { + const isGpt4oA = a.startsWith('gpt-4o'); + const isGpt4oB = b.startsWith('gpt-4o'); + const isOpenAIA = a.startsWith('gpt-'); + const isOpenAIB = b.startsWith('gpt-'); + + if (isGpt4oA && !isGpt4oB) return -1; + if (!isGpt4oA && isGpt4oB) return 1; + if (isOpenAIA && !isOpenAIB) return -1; + if (!isOpenAIA && isOpenAIB) return 1; + return 0; + }); + + return { modelOptions, modelMaxToken, modelCost, modelTypes }; +}; + +export type ModelOptions = string; \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index adc08d197..369a2bb58 100644 --- a/yarn.lock +++ b/yarn.lock @@ -48,6 +48,13 @@ core-js-pure "^3.25.1" regenerator-runtime "^0.13.11" +"@babel/runtime@^7.12.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.0.tgz#3af9a91c1b739c569d5d80cc917280919c544ecb" + integrity sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.0", "@babel/runtime@^7.18.3", "@babel/runtime@^7.19.4", "@babel/runtime@^7.20.6": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" @@ -122,6 +129,23 @@ source-map "^0.5.7" stylis "4.1.3" +"@emotion/babel-plugin@^11.12.0": + version "11.12.0" + resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz#7b43debb250c313101b3f885eba634f1d723fcc2" + integrity sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/runtime" "^7.18.3" + "@emotion/hash" "^0.9.2" + "@emotion/memoize" "^0.9.0" + "@emotion/serialize" "^1.2.0" + babel-plugin-macros "^3.1.0" + convert-source-map "^1.5.0" + escape-string-regexp "^4.0.0" + find-root "^1.1.0" + source-map "^0.5.7" + stylis "4.2.0" + "@emotion/cache@^11.1.3": version "11.10.5" resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.10.5.tgz#c142da9351f94e47527ed458f7bbbbe40bb13c12" @@ -133,6 +157,17 @@ "@emotion/weak-memoize" "^0.3.0" stylis "4.1.3" +"@emotion/cache@^11.13.0", "@emotion/cache@^11.4.0": + version "11.13.1" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.13.1.tgz#fecfc54d51810beebf05bf2a161271a1a91895d7" + integrity sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw== + dependencies: + "@emotion/memoize" "^0.9.0" + "@emotion/sheet" "^1.4.0" + "@emotion/utils" "^1.4.0" + "@emotion/weak-memoize" "^0.4.0" + stylis "4.2.0" + "@emotion/css@11.1.3": version "11.1.3" resolved "https://registry.yarnpkg.com/@emotion/css/-/css-11.1.3.tgz#9ed44478b19e5d281ccbbd46d74d123d59be793f" @@ -149,11 +184,35 @@ resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.0.tgz#c5153d50401ee3c027a57a177bc269b16d889cb7" integrity sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ== +"@emotion/hash@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.2.tgz#ff9221b9f58b4dfe61e619a7788734bd63f6898b" + integrity sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g== + "@emotion/memoize@^0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.0.tgz#f580f9beb67176fa57aae70b08ed510e1b18980f" integrity sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA== +"@emotion/memoize@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.9.0.tgz#745969d649977776b43fc7648c556aaa462b4102" + integrity sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ== + +"@emotion/react@^11.8.1": + version "11.13.0" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.13.0.tgz#a9ebf827b98220255e5760dac89fa2d38ca7b43d" + integrity sha512-WkL+bw1REC2VNV1goQyfxjx1GYJkcc23CRQkXX+vZNLINyfI7o+uUn/rTGPt/xJ3bJHd5GcljgnxHf4wRw5VWQ== + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.12.0" + "@emotion/cache" "^11.13.0" + "@emotion/serialize" "^1.3.0" + "@emotion/use-insertion-effect-with-fallbacks" "^1.1.0" + "@emotion/utils" "^1.4.0" + "@emotion/weak-memoize" "^0.4.0" + hoist-non-react-statics "^3.3.1" + "@emotion/serialize@^1.0.0", "@emotion/serialize@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.1.tgz#0595701b1902feded8a96d293b26be3f5c1a5cf0" @@ -165,26 +224,62 @@ "@emotion/utils" "^1.2.0" csstype "^3.0.2" +"@emotion/serialize@^1.2.0", "@emotion/serialize@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.3.0.tgz#e07cadfc967a4e7816e0c3ffaff4c6ce05cb598d" + integrity sha512-jACuBa9SlYajnpIVXB+XOXnfJHyckDfe6fOpORIM6yhBDlqGuExvDdZYHDQGoDf3bZXGv7tNr+LpLjJqiEQ6EA== + dependencies: + "@emotion/hash" "^0.9.2" + "@emotion/memoize" "^0.9.0" + "@emotion/unitless" "^0.9.0" + "@emotion/utils" "^1.4.0" + csstype "^3.0.2" + "@emotion/sheet@^1.0.0", "@emotion/sheet@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.1.tgz#0767e0305230e894897cadb6c8df2c51e61a6c2c" integrity sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA== +"@emotion/sheet@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.4.0.tgz#c9299c34d248bc26e82563735f78953d2efca83c" + integrity sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg== + "@emotion/unitless@^0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.0.tgz#a4a36e9cbdc6903737cd20d38033241e1b8833db" integrity sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw== +"@emotion/unitless@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.9.0.tgz#8e5548f072bd67b8271877e51c0f95c76a66cbe2" + integrity sha512-TP6GgNZtmtFaFcsOgExdnfxLLpRDla4Q66tnenA9CktvVSdNKDvMVuUah4QvWPIpNjrWsGg3qeGo9a43QooGZQ== + +"@emotion/use-insertion-effect-with-fallbacks@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz#1a818a0b2c481efba0cf34e5ab1e0cb2dcb9dfaf" + integrity sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw== + "@emotion/utils@^1.0.0", "@emotion/utils@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.0.tgz#9716eaccbc6b5ded2ea5a90d65562609aab0f561" integrity sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw== +"@emotion/utils@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.4.0.tgz#262f1d02aaedb2ec91c83a0955dd47822ad5fbdd" + integrity sha512-spEnrA1b6hDR/C68lC2M7m6ALPUHZC0lIY7jAS/B/9DuuO1ZP04eov8SMv/6fwRd8pzmsn2AuJEznRREWlQrlQ== + "@emotion/weak-memoize@^0.3.0": version "0.3.0" resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz#ea89004119dc42db2e1dba0f97d553f7372f6fcb" integrity sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg== +"@emotion/weak-memoize@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz#5e13fac887f08c44f76b0ccaf3370eb00fec9bb6" + integrity sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg== + "@esbuild/android-arm64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz#cf91e86df127aa3d141744edafcba0abdc577d23" @@ -295,6 +390,26 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz#c5a1a4bfe1b57f0c3e61b29883525c6da3e5c091" integrity sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q== +"@floating-ui/core@^1.6.0": + version "1.6.7" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.7.tgz#7602367795a390ff0662efd1c7ae8ca74e75fb12" + integrity sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g== + dependencies: + "@floating-ui/utils" "^0.2.7" + +"@floating-ui/dom@^1.0.1": + version "1.6.10" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.10.tgz#b74c32f34a50336c86dcf1f1c845cf3a39e26d6f" + integrity sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A== + dependencies: + "@floating-ui/core" "^1.6.0" + "@floating-ui/utils" "^0.2.7" + +"@floating-ui/utils@^0.2.7": + version "0.2.7" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.7.tgz#d0ece53ce99ab5a8e37ebdfe5e32452a2bfc073e" + integrity sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA== + "@hapi/hoek@^9.0.0": version "9.3.0" resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" @@ -663,6 +778,13 @@ dependencies: "@types/react" "*" +"@types/react-transition-group@^4.4.0": + version "4.4.11" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.11.tgz#d963253a611d757de01ebb241143b1017d5d63d5" + integrity sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA== + dependencies: + "@types/react" "*" + "@types/react@*", "@types/react@^18.0.27": version "18.0.28" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.28.tgz#accaeb8b86f4908057ad629a26635fe641480065" @@ -1509,6 +1631,14 @@ dmg-license@^1.0.11: smart-buffer "^4.0.2" verror "^1.10.0" +dom-helpers@^5.0.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" + integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== + dependencies: + "@babel/runtime" "^7.8.7" + csstype "^3.0.2" + dompurify@^2.2.0: version "2.4.5" resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.4.5.tgz#0e89a27601f0bad978f9a924e7a05d5d2cccdd87" @@ -2034,6 +2164,13 @@ highlight.js@~11.7.0: resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-11.7.0.tgz#3ff0165bc843f8c9bce1fd89e2fda9143d24b11e" integrity sha512-1rRqesRFhMO/PRF+G86evnyJkCgaZFOI+Z6kdj15TA18funfoqJXvgPCLSf0SWq3SRfg1j3HlDs8o4s3EGq1oQ== +hoist-non-react-statics@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + hosted-git-info@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" @@ -2600,6 +2737,11 @@ mdast-util-to-string@^3.0.0, mdast-util-to-string@^3.1.0: dependencies: "@types/mdast" "^3.0.0" +memoize-one@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-6.0.0.tgz#b2591b871ed82948aee4727dc6abceeeac8c1045" + integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw== + merge2@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" @@ -3213,7 +3355,7 @@ prop-types@15.7.2: object-assign "^4.1.1" react-is "^16.8.1" -prop-types@^15.0.0: +prop-types@^15.0.0, prop-types@^15.6.0, prop-types@^15.6.2: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -3273,7 +3415,7 @@ react-i18next@^12.2.0: "@babel/runtime" "^7.20.6" html-parse-stringify "^3.0.1" -react-is@^16.13.1, react-is@^16.8.1: +react-is@^16.13.1, react-is@^16.7.0, react-is@^16.8.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -3317,6 +3459,21 @@ react-scroll-to-bottom@^4.2.0: prop-types "15.7.2" simple-update-in "2.2.0" +react-select@^5.8.0: + version "5.8.0" + resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.8.0.tgz#bd5c467a4df223f079dd720be9498076a3f085b5" + integrity sha512-TfjLDo58XrhP6VG5M/Mi56Us0Yt8X7xD6cDybC7yoRMUNm7BGO7qk8J0TLQOua/prb8vUOtsfnXZwfm30HGsAA== + dependencies: + "@babel/runtime" "^7.12.0" + "@emotion/cache" "^11.4.0" + "@emotion/react" "^11.8.1" + "@floating-ui/dom" "^1.0.1" + "@types/react-transition-group" "^4.4.0" + memoize-one "^6.0.0" + prop-types "^15.6.0" + react-transition-group "^4.3.0" + use-isomorphic-layout-effect "^1.1.2" + react-toastify@^10.0.5: version "10.0.5" resolved "https://registry.yarnpkg.com/react-toastify/-/react-toastify-10.0.5.tgz#6b8f8386060c5c856239f3036d1e76874ce3bd1e" @@ -3324,6 +3481,16 @@ react-toastify@^10.0.5: dependencies: clsx "^2.1.0" +react-transition-group@^4.3.0: + version "4.4.5" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" + integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== + dependencies: + "@babel/runtime" "^7.5.5" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" + react@^18.2.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" @@ -3361,6 +3528,11 @@ regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.7: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + rehype-highlight@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/rehype-highlight/-/rehype-highlight-6.0.0.tgz#8097219d8813b51f4c2b6d92db27dac6cbc9a641" @@ -3700,6 +3872,11 @@ stylis@4.1.3: resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.1.3.tgz#fd2fbe79f5fed17c55269e16ed8da14c84d069f7" integrity sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA== +stylis@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" + integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== + sumchecker@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-3.0.1.tgz#6377e996795abb0b6d348e9b3e1dfb24345a8e42" @@ -3966,6 +4143,11 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +use-isomorphic-layout-effect@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" + integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== + use-sync-external-store@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a"