From c255e1f94e933caed59a3b4144b57a0e5ed4b7ed Mon Sep 17 00:00:00 2001 From: Mykhailo Marynenko Date: Sun, 21 Apr 2024 17:00:34 -0700 Subject: [PATCH] Sun Apr 21 17:00:34 PDT 2024 --- README.md | 2 +- bun.lockb | Bin 598876 -> 606292 bytes docs/content/index.yml | 2 +- ollama/config.yaml | 1 + package.json | 2 +- server/config.yaml | 15 +++++++++--- server/package.json | 3 ++- server/src/addon-config.ts | 4 +++ server/src/services/assistant.ts | 7 +++++- skill/dynamic/config.ts | 9 +++++++ skill/dynamic/index.ts | 23 ++++++++++++++++++ skill/dynamic/package.json | 18 ++++++++++++++ skill/dynamic/provider/http.ts | 8 ++++++ skill/dynamic/schema.ts | 13 ++++++++++ .../dynamic}/tsconfig.json | 0 {skills => skill}/homeassistant/config.ts | 0 {skills => skill}/homeassistant/index.ts | 0 {skills => skill}/homeassistant/package.json | 4 +-- .../homeassistant/provider/index.ts | 0 .../homeassistant/provider/supervisor.ts | 0 {skills => skill}/homeassistant/schema.ts | 0 .../homeassistant/tools/entities.ts | 0 .../homeassistant/tools/services.ts | 0 skill/homeassistant/tsconfig.json | 3 +++ 24 files changed, 103 insertions(+), 11 deletions(-) create mode 100644 skill/dynamic/config.ts create mode 100644 skill/dynamic/index.ts create mode 100644 skill/dynamic/package.json create mode 100644 skill/dynamic/provider/http.ts create mode 100644 skill/dynamic/schema.ts rename {skills/homeassistant => skill/dynamic}/tsconfig.json (100%) rename {skills => skill}/homeassistant/config.ts (100%) rename {skills => skill}/homeassistant/index.ts (100%) rename {skills => skill}/homeassistant/package.json (89%) rename {skills => skill}/homeassistant/provider/index.ts (100%) rename {skills => skill}/homeassistant/provider/supervisor.ts (100%) rename {skills => skill}/homeassistant/schema.ts (100%) rename {skills => skill}/homeassistant/tools/entities.ts (100%) rename {skills => skill}/homeassistant/tools/services.ts (100%) create mode 100644 skill/homeassistant/tsconfig.json diff --git a/README.md b/README.md index a65ab20..f3a3baa 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ For documentation, visit the project website: [ava.0x77.dev](https://ava.0x77.de - **Supports major LLMs**: OpenAI, Anthropic, and Ollama supported by default. - **Home Assistant Integration**: Control Home Assistant devices and get entity information. -- **Extensible _(work in progress)_**: Easily add new skills via custom HTTP endpoints. +- **Extensible _(work in progress)_**: Easily add new skill via custom HTTP endpoints. - **Customizable**: Highly configurable through environment variables. - **Fully private**: Can be self-hosted for complete data control. - **OpenAI compatible endpoints**: Chat with Ava using OpenAI-compatible chat completion. diff --git a/bun.lockb b/bun.lockb index a797f695602c79cfb5a443bd8294f98f1741a871..a3189c1c2db7718962716e1cacdcaf2ed166b1cd 100755 GIT binary patch delta 122136 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 delta 116920 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 diff --git a/docs/content/index.yml b/docs/content/index.yml index 082aa73..1fc24e3 100644 --- a/docs/content/index.yml +++ b/docs/content/index.yml @@ -48,7 +48,7 @@ features: target: '_blank' - title: 'Extensible' wip: true - description: 'Easily add new skills via custom HTTP endpoints' + description: 'Easily add new skill via custom HTTP endpoints' icon: 'i-heroicons-sparkles-20-solid' target: '_blank' - title: 'Customizable' diff --git a/ollama/config.yaml b/ollama/config.yaml index 830e692..65a9608 100644 --- a/ollama/config.yaml +++ b/ollama/config.yaml @@ -12,6 +12,7 @@ ports: image: docker.io/ollama/ollama ingress: true ingress_port: 11434 +ingress_stream: true map: - config:rw environment: diff --git a/package.json b/package.json index bc3bee5..61d6304 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "license": "GPL-3.0", "workspaces": [ "packages/*", - "skills/*", + "skill/*", "docs", "server" ], diff --git a/server/config.yaml b/server/config.yaml index 6e3221b..baa8cfb 100644 --- a/server/config.yaml +++ b/server/config.yaml @@ -1,6 +1,6 @@ name: "Ava Server" description: "Self-hosted personal assistant in minutes with built-in Home Assistant integration and great extensibility and customizability" -version: "edge" +version: "0.0.0" slug: "server" init: false arch: @@ -13,6 +13,7 @@ image: ghcr.io/0x77dev/ava/server homeassistant_api: true ingress: true ingress_port: 2881 +ingress_stream: true options: llm: namespace: anthropic @@ -21,15 +22,21 @@ options: embeddings: namespace: ollama baseURL: "http://04c4e5a1-ollama:11434" - name: nomic-embed-text + name: snowflake-arctic-embed:22m + skills: [] schema: llm: - namespace: str + namespace: list(anthropic|openai|ollama) name: "str" token: "str?" baseURL: "str?" embeddings: - namespace: str + namespace: list(openai|ollama) name: "str" token: "str?" baseURL: "str?" + skills: + - name: "str" + description: "str" + returnDirect: "bool?" + url: "str" diff --git a/server/package.json b/server/package.json index eac51dd..c05bc10 100644 --- a/server/package.json +++ b/server/package.json @@ -8,7 +8,8 @@ "dependencies": { "@ava/lang": "workspace:../packages/lang", "@ava/oai-types": "workspace:../packages/oai-types", - "@ava/skills-homeassistant": "workspace:../packages/skills-homeassistant", + "@ava/skill-homeassistant": "workspace:../skill/homeassistant", + "@ava/skill-dynamic": "workspace:../skill/dynamic", "@bogeychan/elysia-logger": "^0.0.21", "@elysiajs/swagger": "^1.0.3", "elysia": "latest", diff --git a/server/src/addon-config.ts b/server/src/addon-config.ts index 2b97fbe..0e43379 100644 --- a/server/src/addon-config.ts +++ b/server/src/addon-config.ts @@ -21,6 +21,10 @@ export const injectHassOptions = async () => { process.env.EMBEDDINGS = JSON.stringify(options.embeddings) } + if (options.skills) { + process.env.SKILLS = JSON.stringify(options.skills) + } + if (process.env.SUPERVISOR_TOKEN) { process.env.HOMEASSISTANT = JSON.stringify({ "token": process.env.SUPERVISOR_TOKEN, diff --git a/server/src/services/assistant.ts b/server/src/services/assistant.ts index fa32428..a4afeb5 100644 --- a/server/src/services/assistant.ts +++ b/server/src/services/assistant.ts @@ -10,10 +10,15 @@ export const getAssistant = async () => { const tools: ToolInterface[] = [] if (process.env.HOMEASSISTANT) { - const { createHomeAssistantToolkit } = await import('@ava/skills-homeassistant') + const { createHomeAssistantToolkit } = await import('@ava/skill-homeassistant') tools.push(...await createHomeAssistantToolkit()) } + if (process.env.SKILLS) { + const { createDynamicToolkit } = await import('@ava/skill-dynamic') + tools.push(...await createDynamicToolkit()) + } + assistant = await createAssistant(tools) return assistant } diff --git a/skill/dynamic/config.ts b/skill/dynamic/config.ts new file mode 100644 index 0000000..e9bcf06 --- /dev/null +++ b/skill/dynamic/config.ts @@ -0,0 +1,9 @@ +import { parseEnv, z } from "znv"; +import { SkillListSchema } from "./schema"; + +export const { SKILLS } = parseEnv(process.env, { + SKILLS: { + schema: z.string().transform((value) => SkillListSchema.parse(JSON.parse(value))), + description: "Skills configuration" + } +}) diff --git a/skill/dynamic/index.ts b/skill/dynamic/index.ts new file mode 100644 index 0000000..1601bb6 --- /dev/null +++ b/skill/dynamic/index.ts @@ -0,0 +1,23 @@ +import { DynamicTool, type ToolInterface } from '@ava/lang' +import { SKILLS } from './config' +import { http } from './provider/http' + +export const createDynamicToolkit = async (): Promise => { + return SKILLS.map((skill) => { + console.info(`[Dynamic Skill] creating dynamic tool for ${skill.name} at ${skill.url}`) + + return new DynamicTool({ + name: skill.name, + description: skill.description, + returnDirect: skill.returnDirect, + async func(body) { + const response = await http.post(skill.url, { + body, + responseType: 'json' + }).text() + + return response + } + }) + }) +} diff --git a/skill/dynamic/package.json b/skill/dynamic/package.json new file mode 100644 index 0000000..f3ee2f8 --- /dev/null +++ b/skill/dynamic/package.json @@ -0,0 +1,18 @@ +{ + "name": "@ava/skill-dynamic", + "module": "index.ts", + "type": "module", + "version": "0.0.0", + "devDependencies": { + "@types/bun": "latest" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "dependencies": { + "@ava/lang": "workspace:../../packages/lang", + "got": "^14.2.1", + "znv": "^0.4.0", + "zod": "^3.23.0" + } +} diff --git a/skill/dynamic/provider/http.ts b/skill/dynamic/provider/http.ts new file mode 100644 index 0000000..29d4c27 --- /dev/null +++ b/skill/dynamic/provider/http.ts @@ -0,0 +1,8 @@ +import got from "got" +import { version } from "../package.json" + +export const http = got.extend({ + headers: { + "User-Agent": `ava-dynamic-skill/${version}`, + } +}) diff --git a/skill/dynamic/schema.ts b/skill/dynamic/schema.ts new file mode 100644 index 0000000..eb784ee --- /dev/null +++ b/skill/dynamic/schema.ts @@ -0,0 +1,13 @@ +import { z } from "zod"; + +export const SkillSchema = z.object({ + name: z.string(), + description: z.string(), + // schema: z.optional(z.any()).describe('JSON schema if the skill requires input'), + returnDirect: z.boolean().optional().describe('Whether the skill returns the result directly or not').default(false), + url: z.string().url().describe('HTTP POST URL to send the data to'), +}) +export type Skill = z.infer + +export const SkillListSchema = z.array(SkillSchema) +export type SkillList = z.infer diff --git a/skills/homeassistant/tsconfig.json b/skill/dynamic/tsconfig.json similarity index 100% rename from skills/homeassistant/tsconfig.json rename to skill/dynamic/tsconfig.json diff --git a/skills/homeassistant/config.ts b/skill/homeassistant/config.ts similarity index 100% rename from skills/homeassistant/config.ts rename to skill/homeassistant/config.ts diff --git a/skills/homeassistant/index.ts b/skill/homeassistant/index.ts similarity index 100% rename from skills/homeassistant/index.ts rename to skill/homeassistant/index.ts diff --git a/skills/homeassistant/package.json b/skill/homeassistant/package.json similarity index 89% rename from skills/homeassistant/package.json rename to skill/homeassistant/package.json index 4eb79ab..38853d0 100644 --- a/skills/homeassistant/package.json +++ b/skill/homeassistant/package.json @@ -1,5 +1,5 @@ { - "name": "@ava/skills-homeassistant", + "name": "@ava/skill-homeassistant", "module": "index.ts", "type": "module", "dependencies": { @@ -15,4 +15,4 @@ "peerDependencies": { "typescript": "^5.0.0" } -} \ No newline at end of file +} diff --git a/skills/homeassistant/provider/index.ts b/skill/homeassistant/provider/index.ts similarity index 100% rename from skills/homeassistant/provider/index.ts rename to skill/homeassistant/provider/index.ts diff --git a/skills/homeassistant/provider/supervisor.ts b/skill/homeassistant/provider/supervisor.ts similarity index 100% rename from skills/homeassistant/provider/supervisor.ts rename to skill/homeassistant/provider/supervisor.ts diff --git a/skills/homeassistant/schema.ts b/skill/homeassistant/schema.ts similarity index 100% rename from skills/homeassistant/schema.ts rename to skill/homeassistant/schema.ts diff --git a/skills/homeassistant/tools/entities.ts b/skill/homeassistant/tools/entities.ts similarity index 100% rename from skills/homeassistant/tools/entities.ts rename to skill/homeassistant/tools/entities.ts diff --git a/skills/homeassistant/tools/services.ts b/skill/homeassistant/tools/services.ts similarity index 100% rename from skills/homeassistant/tools/services.ts rename to skill/homeassistant/tools/services.ts diff --git a/skill/homeassistant/tsconfig.json b/skill/homeassistant/tsconfig.json new file mode 100644 index 0000000..4082f16 --- /dev/null +++ b/skill/homeassistant/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "../../tsconfig.json" +}