diff --git a/apps/dashboard/components/AgentInputs/ModelInput.tsx b/apps/dashboard/components/AgentInputs/ModelInput.tsx index f582ec444..465108c62 100644 --- a/apps/dashboard/components/AgentInputs/ModelInput.tsx +++ b/apps/dashboard/components/AgentInputs/ModelInput.tsx @@ -20,6 +20,7 @@ import { useSession } from 'next-auth/react'; import React, { useState } from 'react'; import { useFormContext } from 'react-hook-form'; +import { ModelConfig } from '@chaindesk/lib/config'; import { CUSTOMER_SUPPORT } from '@chaindesk/lib/prompt-templates'; import { PromptTypesLabels, RouteNames } from '@chaindesk/lib/types'; import { CreateAgentSchema } from '@chaindesk/lib/types/dtos'; @@ -106,19 +107,22 @@ export default function ModelInput({}: Props) { }} > diff --git a/apps/dashboard/components/AgentSettingsTab/index.tsx b/apps/dashboard/components/AgentSettingsTab/index.tsx index 97b0f9cbc..70c086f95 100644 --- a/apps/dashboard/components/AgentSettingsTab/index.tsx +++ b/apps/dashboard/components/AgentSettingsTab/index.tsx @@ -42,10 +42,16 @@ function AgentSettingsTab(props: Props) { useEffect(() => { if (router.query.settingTab) { - delete router.query.settingTab; - router.replace(router, undefined, { shallow: true }); + setState({ + currentTab: router.query.settingTab as string, + }); } - }, []); + }, [router.query.settingTab]); + + const handleChangeTab = (tab: string) => { + router.query.settingTab = tab; + router.replace(router, undefined, { shallow: true }); + }; if (!agent) { return null; @@ -72,11 +78,7 @@ function AgentSettingsTab(props: Props) { - setState({ - currentTab: 'general', - }) - } + onClick={() => handleChangeTab('general')} > @@ -87,11 +89,7 @@ function AgentSettingsTab(props: Props) { - setState({ - currentTab: 'model', - }) - } + onClick={() => handleChangeTab('model')} > @@ -102,11 +100,7 @@ function AgentSettingsTab(props: Props) { - setState({ - currentTab: 'tools', - }) - } + onClick={() => handleChangeTab('tools')} > @@ -117,11 +111,7 @@ function AgentSettingsTab(props: Props) { - setState({ - currentTab: 'security', - }) - } + onClick={() => handleChangeTab('security')} > diff --git a/apps/dashboard/components/AgentTable.tsx b/apps/dashboard/components/AgentTable.tsx index d11781638..107b62be7 100644 --- a/apps/dashboard/components/AgentTable.tsx +++ b/apps/dashboard/components/AgentTable.tsx @@ -13,7 +13,7 @@ import Link from 'next/link'; import * as React from 'react'; import { RouteNames } from '@chaindesk/lib/types'; -import { Agent, Datastore } from '@chaindesk/prisma'; +import { Agent } from '@chaindesk/prisma'; export default function AgentTable({ items }: { items: Agent[] }) { return ( @@ -46,8 +46,8 @@ export default function AgentTable({ items }: { items: Agent[] }) { Name Description + Model Visibility - {/* Subscription */} @@ -85,6 +85,11 @@ export default function AgentTable({ items }: { items: Agent[] }) { + + + {agent.modelName} + + {query?.data?.name} + { + router.query.tab = 'settings'; + router.query.settingTab = 'model'; + router.push(router); + }} + > + {query?.data?.modelName} + { + router.query.tab = 'settings'; + router.query.settingTab = 'security'; + router.push(router); + }} > {query?.data?.visibility} diff --git a/apps/dashboard/pages/api/agents/[id]/query.tsx b/apps/dashboard/pages/api/agents/[id]/query.tsx index d8a6d48fa..a9b0e2aeb 100644 --- a/apps/dashboard/pages/api/agents/[id]/query.tsx +++ b/apps/dashboard/pages/api/agents/[id]/query.tsx @@ -2,13 +2,13 @@ import cuid from 'cuid'; import { NextApiRequest, NextApiResponse } from 'next'; import { NewConversation, render } from '@chaindesk/emails'; -import { queryCountConfig } from '@chaindesk/lib/account-config'; import AgentManager from '@chaindesk/lib/agent'; import { ApiError, ApiErrorType } from '@chaindesk/lib/api-error'; import { formatOrganizationSession, sessionOrganizationInclude, } from '@chaindesk/lib/auth'; +import { ModelConfig } from '@chaindesk/lib/config'; import ConversationManager from '@chaindesk/lib/conversation'; import { createLazyAuthHandler, @@ -177,7 +177,7 @@ export const chatAgentRequest = async ( data: { nbAgentQueries: (agent?.organization?.usage?.nbAgentQueries || 0) + - (queryCountConfig?.[agent?.modelName] || 1), + (ModelConfig?.[agent?.modelName].cost || 1), }, }), ]); diff --git a/apps/dashboard/pages/api/chains/run.ts b/apps/dashboard/pages/api/chains/run.ts index a1eb0eba1..260516ef0 100644 --- a/apps/dashboard/pages/api/chains/run.ts +++ b/apps/dashboard/pages/api/chains/run.ts @@ -41,7 +41,7 @@ export const runChainRequest = async ( }, include: { messages: { - take: -4, + take: -24, orderBy: { createdAt: 'asc', }, diff --git a/apps/dashboard/tests/test-prompts.ts b/apps/dashboard/tests/test-prompts.ts index 314f2b8cd..12a3ad4aa 100644 --- a/apps/dashboard/tests/test-prompts.ts +++ b/apps/dashboard/tests/test-prompts.ts @@ -30,7 +30,7 @@ const customerSupportDataset = [ (async () => { const agent = await prisma.agent.findUnique({ where: { - id: 'cloiefapb000q0ut1pamawveh', + id: 'cloisatop00080u2u5cuzwphg', }, include: { tools: { diff --git a/packages/lib/account-config.ts b/packages/lib/account-config.ts index f9323366d..0b206a97e 100644 --- a/packages/lib/account-config.ts +++ b/packages/lib/account-config.ts @@ -21,13 +21,6 @@ type Plan = { }; }; -export const queryCountConfig = { - [AgentModelName.gpt_3_5_turbo]: 1, - [AgentModelName.gpt_3_5_turbo_16k]: 15, - [AgentModelName.gpt_4]: 20, - [AgentModelName.gpt_4_32k]: 30, -}; - const config: { [key in SubscriptionPlan]: Plan; } = { diff --git a/packages/lib/config.ts b/packages/lib/config.ts index 2372707b4..c1ccb0c71 100644 --- a/packages/lib/config.ts +++ b/packages/lib/config.ts @@ -15,20 +15,34 @@ export const XPBNPLabels = { export const ModelConfig = { [AgentModelName.gpt_3_5_turbo]: { - name: 'gpt-3.5-turbo', + name: 'gpt-3.5-turbo-1106', maxTokens: 4096, + cost: 1, }, [AgentModelName.gpt_3_5_turbo_16k]: { - name: 'gpt-3.5-turbo-16k', + name: 'gpt-3.5-turbo-1106', maxTokens: 16384, + cost: 1, }, [AgentModelName.gpt_4]: { name: 'gpt-4', maxTokens: 8192, + cost: 30, }, [AgentModelName.gpt_4_32k]: { name: 'gpt-4-32k', maxTokens: 32768, + cost: 60, + }, + [AgentModelName.gpt_4_turbo]: { + name: 'gpt-4-1106-preview', + maxTokens: 128000, + cost: 13, + }, + [AgentModelName.gpt_4_turbo_vision]: { + name: 'gpt-4-vision-preview', + maxTokens: 128000, + cost: 13, }, }; diff --git a/packages/prisma/migrations/20231106203619_/migration.sql b/packages/prisma/migrations/20231106203619_/migration.sql new file mode 100644 index 000000000..8f325bff5 --- /dev/null +++ b/packages/prisma/migrations/20231106203619_/migration.sql @@ -0,0 +1,10 @@ +-- AlterEnum +-- This migration adds more than one value to an enum. +-- With PostgreSQL versions 11 and earlier, this is not possible +-- in a single migration. This can be worked around by creating +-- multiple migrations, each migration adding only one value to +-- the enum. + + +ALTER TYPE "AgentModelName" ADD VALUE 'gpt_4_turbo'; +ALTER TYPE "AgentModelName" ADD VALUE 'gpt_4_turbo_vision'; diff --git a/packages/prisma/schema.prisma b/packages/prisma/schema.prisma index 3fd9f93e8..d296ec185 100644 --- a/packages/prisma/schema.prisma +++ b/packages/prisma/schema.prisma @@ -637,6 +637,8 @@ enum AgentModelName { gpt_3_5_turbo_16k gpt_4 gpt_4_32k + gpt_4_turbo + gpt_4_turbo_vision } enum MessageEval {