This commit is contained in:
Dark Sun
2024-01-26 16:43:28 +05:00
parent 53168b11ce
commit bd77f15017
6 changed files with 114 additions and 68 deletions
+2
View File
@@ -1,4 +1,6 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
postgres_data/*
redis_data/*
*.swp
.idea
+27
View File
@@ -0,0 +1,27 @@
# Выберите подходящий базовый образ, например, официальный Node.js:
FROM node:20
# Установите глобально pnpm, если он не установлен:
RUN npm install -g pnpm
# Создайте директорию приложения
WORKDIR /usr/src/app
# Копируйте файлы package.json и возможно pnpm-lock.yaml
COPY package.json pnpm-lock.yaml ./
# Установите зависимости
RUN pnpm install
# Копируйте исходные файлы приложения
COPY . .
# Генерируйте файлы приложения
#RUN pnpm generate && pnpm prisma db push && pnpm build
# Экспонируйте порт, если ваш REST API слушает его
#EXPOSE 3000
# Добавьте две команды для API сервера и обработчика задач
# Используйте `CMD` для указания инструкций по запуску, которые будут выполнены при запуске контейнера
#CMD ["sh", "-c", "npx tsx dist/server & npx tsx dist/runner"]
+25 -2
View File
@@ -14,16 +14,39 @@ services:
ports:
- "6379:6379"
postgres:
image: postgres
container_name: postgres
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: dbname
DATABASE_URL: 'postgres://user:password@localhost:5432/dbname'
POSTGRES_DB: dev
DATABASE_URL: 'postgres://user:password@localhost:5432/dev'
volumes:
- ./postgres_data:/var/lib/postgresql/data
ports:
- "5432:5432"
# intellect_server:
# container_name: intellect_server
# build: .
# volumes:
# - .:/usr/src/app
# ports:
# - "3000:3000"
# command: npx tsx dist/server # Запуск REST API сервера
# depends_on:
# - redis
# - postgres
# intellect_runner:
# container_name: intellect_runner
# build: .
# volumes:
# - .:/usr/src/app
# command: npx tsx dist/runner # Запуск обработчика задач
# depends_on:
# - redis
# - postgres
+42 -40
View File
@@ -9,8 +9,8 @@ dependencies:
specifier: ^3.449.0
version: 3.449.0
'@dexaai/dexter':
specifier: ^1.1.0
version: 1.1.0
specifier: ^1.2.4
version: 1.2.8
'@fastify/deepmerge':
specifier: ^1.3.0
version: 1.3.0
@@ -1115,24 +1115,24 @@ packages:
types-pkg-json: 1.2.1
dev: true
/@dexaai/dexter@1.1.0:
resolution: {integrity: sha512-PAz2dwFNT82y6W60mIF2ryKkSSR4xZQOwi4iQs6IWjNoKdKZsMh2/JYIBd+x6g+dre10G7A7R1JOVvekRs718A==}
/@dexaai/dexter@1.2.8:
resolution: {integrity: sha512-fSwiS2U4X7V/BCECOoIsl3xdnPNFkYMO/5TBs2LYLNOwDHgkT7YXZOLRjnwwU+hFjdsLUQD86koa6tDSZmOHYw==}
engines: {node: '>= 18'}
dependencies:
'@fastify/deepmerge': 1.3.0
dedent: 1.5.1
hash-object: 5.0.0
hash-object: 5.0.1
jsonrepair: 3.4.1
ky: 1.1.3
openai-fetch: 2.0.1
p-map: 6.0.0
p-throttle: 5.1.0
parse-json: 7.1.1
p-throttle: 6.1.0
parse-json: 8.1.0
pinecone-client: 2.0.0
tiktoken: 1.0.10
tiktoken: 1.0.11
zod: 3.22.4
zod-to-json-schema: 3.21.4(zod@3.22.4)
zod-validation-error: 1.5.0(zod@3.22.4)
zod-to-json-schema: 3.22.3(zod@3.22.4)
zod-validation-error: 2.1.0(zod@3.22.4)
transitivePeerDependencies:
- babel-plugin-macros
dev: false
@@ -3342,6 +3342,11 @@ packages:
engines: {node: '>=10'}
dev: true
/decircular@0.1.1:
resolution: {integrity: sha512-V2Vy+QYSXdgxRPmOZKQWCDf1KQNTUP/Eqswv/3W20gz7+6GB1HTosNrWqK3PqstVpFw/Dd/cGTmXSTKPeOiGVg==}
engines: {node: '>=18'}
dev: false
/decompress-response@6.0.0:
resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==}
engines: {node: '>=10'}
@@ -3612,6 +3617,7 @@ packages:
resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
dependencies:
is-arrayish: 0.2.1
dev: true
/es-abstract@1.22.3:
resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==}
@@ -4673,10 +4679,11 @@ packages:
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dev: true
/hash-object@5.0.0:
resolution: {integrity: sha512-wU0mUPhowb+Rn5GLyqcWkh8FZJB4tD/90YQSkcrOfqfPZdYghHU0yYlaYnEv+Xtpni65dsySU+tf8jdKlQETVw==}
/hash-object@5.0.1:
resolution: {integrity: sha512-iaRY4jYOow1caHkXW7wotYRjZDQk2nq4U7904anGJj8l4x1SLId+vuR8RpGoywZz9puD769hNFVFLFH9t+baJw==}
engines: {node: '>=18'}
dependencies:
decircular: 0.1.1
is-obj: 3.0.0
sort-keys: 5.0.0
type-fest: 4.7.1
@@ -4834,6 +4841,11 @@ packages:
engines: {node: '>=12'}
dev: true
/index-to-position@0.1.2:
resolution: {integrity: sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==}
engines: {node: '>=18'}
dev: false
/inflight@1.0.6:
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
dependencies:
@@ -4968,6 +4980,7 @@ packages:
/is-arrayish@0.2.1:
resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
dev: true
/is-async-function@2.0.0:
resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==}
@@ -5364,11 +5377,6 @@ packages:
resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
dev: true
/json-parse-even-better-errors@3.0.0:
resolution: {integrity: sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
dev: false
/json-schema-traverse@0.4.1:
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
dev: true
@@ -5469,11 +5477,6 @@ packages:
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
dev: true
/lines-and-columns@2.0.4:
resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dev: false
/lint-staged@15.0.2:
resolution: {integrity: sha512-vnEy7pFTHyVuDmCAIFKR5QDO8XLVlPFQQyujQ/STOxe40ICWqJ6knS2wSJ/ffX/Lw0rz83luRDh+ET7toN+rOw==}
engines: {node: '>=18.12.0'}
@@ -6397,9 +6400,9 @@ packages:
type-fest: 3.13.1
dev: true
/p-throttle@5.1.0:
resolution: {integrity: sha512-+N+s2g01w1Zch4D0K3OpnPDqLOKmLcQ4BvIFq3JC0K29R28vUOjWpO+OJZBNt8X9i3pFCksZJZ0YXkUGjaFE6g==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
/p-throttle@6.1.0:
resolution: {integrity: sha512-eQMdGTxk2+047La67wefUtt0tEHh7D+C8Jl7QXoFCuIiNYeQ9zWs2AZiJdIAs72rSXZ06t11me2bgalRNdy3SQ==}
engines: {node: '>=18'}
dev: false
/p-timeout@6.1.2:
@@ -6471,15 +6474,13 @@ packages:
lines-and-columns: 1.2.4
dev: true
/parse-json@7.1.1:
resolution: {integrity: sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==}
engines: {node: '>=16'}
/parse-json@8.1.0:
resolution: {integrity: sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==}
engines: {node: '>=18'}
dependencies:
'@babel/code-frame': 7.22.13
error-ex: 1.3.2
json-parse-even-better-errors: 3.0.0
lines-and-columns: 2.0.4
type-fest: 3.13.1
index-to-position: 0.1.2
type-fest: 4.7.1
dev: false
/path-exists@4.0.0:
@@ -7565,8 +7566,8 @@ packages:
resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
dev: true
/tiktoken@1.0.10:
resolution: {integrity: sha512-gF8ndTCNu7WcRFbl1UUWaFIB4CTXmHzS3tRYdyUYF7x3C6YR6Evoao4zhKDmWIwv2PzNbzoQMV8Pxt+17lEDbA==}
/tiktoken@1.0.11:
resolution: {integrity: sha512-aMJcn9NGmb6zDXkCweJLnACyIyjdiYIk1odAfnCUvin7O1QsV1rQP1hatGDMhQovxkeSJhFeU7QuGkbDHGciDQ==}
dev: false
/tiny-inflate@1.0.3:
@@ -7705,6 +7706,7 @@ packages:
/type-fest@3.13.1:
resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==}
engines: {node: '>=14.16'}
dev: true
/type-fest@4.7.1:
resolution: {integrity: sha512-iWr8RUmzAJRfhZugX9O7nZE6pCxDU8CZ3QxsLuTnGcBLJpCaP2ll3s4eMTBoFnU/CeXY/5rfQSuAEsTGJO4y8A==}
@@ -8199,17 +8201,17 @@ packages:
engines: {node: '>=12.20'}
dev: true
/zod-to-json-schema@3.21.4(zod@3.22.4):
resolution: {integrity: sha512-fjUZh4nQ1s6HMccgIeE0VP4QG/YRGPmyjO9sAh890aQKPEk3nqbfUXhMFaC+Dr5KvYBm8BCyvfpZf2jY9aGSsw==}
/zod-to-json-schema@3.22.3(zod@3.22.4):
resolution: {integrity: sha512-9isG8SqRe07p+Aio2ruBZmLm2Q6Sq4EqmXOiNpDxp+7f0LV6Q/LX65fs5Nn+FV/CzfF3NLBoksXbS2jNYIfpKw==}
peerDependencies:
zod: ^3.21.4
zod: ^3.22.4
dependencies:
zod: 3.22.4
dev: false
/zod-validation-error@1.5.0(zod@3.22.4):
resolution: {integrity: sha512-/7eFkAI4qV0tcxMBB/3+d2c1P6jzzZYdYSlBuAklzMuCrJu5bzJfHS0yVAS87dRHVlhftd6RFJDIvv03JgkSbw==}
engines: {node: '>=16.0.0'}
/zod-validation-error@2.1.0(zod@3.22.4):
resolution: {integrity: sha512-VJh93e2wb4c3tWtGgTa0OF/dTt/zoPCPzXq4V11ZjxmEAFaPi/Zss1xIZdEB5RD8GD00U0/iVXgqkF77RV7pdQ==}
engines: {node: '>=18.0.0'}
peerDependencies:
zod: ^3.18.0
dependencies:
+18 -22
View File
@@ -284,31 +284,27 @@ export const worker = new Worker<JobData, JobResult>(
let messageText = ''
const handleUpdate = async (chunk) => {
messageText += chunk
await prisma.message.update({
where: { id: newMessageId },
data: {
content: [
{
type: 'text',
text: {
value: messageText,
annotations: []
}
}
]
}
})
// console.log("newMsg: ", newMsg)
}
const chatCompletionParams: Parameters<typeof chatModel.run>[0] = {
messages: chatMessages,
model: assistant.model,
handleUpdate: handleUpdate,
// @ts-ignore
handleUpdate: async (chunk) => {
messageText += chunk
await prisma.message.update({
where: { id: newMessageId },
data: {
content: [
{
type: 'text',
text: {
value: messageText,
annotations: []
}
}
]
}
})
},
tools: convertAssistantToolsToChatMessageTools(assistant.tools),
tool_choice:
runSteps.length >= config.runs.maxRunSteps ? 'none' : 'auto'
-4
View File
@@ -2,10 +2,6 @@ import { ChatModel, createOpenAIClient } from '@dexaai/dexter/model'
import * as config from '~/lib/config'
const handleUpdate = (chunk) => {
console.log('on handle update', chunk)
}
// TODO: support non-OpenAI models
export const chatModel = new ChatModel({
client: createOpenAIClient(),