Skip to main content

Assistants

caution

This is currently under development.

Overview​

In Jan, assistants are primary entities with the following capabilities:

  • Assistants can use models, tools, handle and emit events, and invoke custom code.
  • Users can create custom assistants with saved model settings and parameters.
  • An OpenAI Assistants API compatible endpoint at localhost:1337/v1/assistants.
  • Jan ships with a default assistant called "Jan" that lets you use all models.

Folder Structure​

/jan
/models/
/threads/
/assistants
/jan # An assistant available to you by default
assistant.json # See below
/src # Assistants can invoke custom code
index.js # Entrypoint
process.js # For server processes (needs better name)
package.json # Import any npm libraries, e.g. Langchain, Llamaindex
/shakespeare # You can create custom assistants
assistant.json
/chicken_man

assistant.json​

  • Each assistant folder contains an assistant.json file, which is a representation of an assistant.
  • assistant.json contains metadata and model parameter overrides
  • There are no required fields.
{
"id": "asst_abc123", // Defaults to foldername
"object": "assistant", // Always "assistant"
"version": 1, // Defaults to 1
"created_at": 1698984975,
"name": "Math Tutor", // Defaults to foldername
"description": null,
"avatar": "https://pic.png",
"models": [ // Defaults to "*" all models
{ ...model_0 }
],
"instructions": "Be concise", // A system prompt for the assistant
"events": [], // Defaults to "*"
"metadata": {}, // Defaults to {}
// "tools": [], // Coming soon
// "file_ids": [], // Coming soon
// "memory/threads": true, // Coming soon
}

Examples​

Here's what the default Jan assistant's json file looks like:

{
"name": "Jan",
"description": "A global assistant that lets you chat with all downloaded models",
"avatar": "https://jan.ai/img/logo.svg",
// All other properties are not explicitly declared and use the default values (see above).
}

Events​

Jan assistants can respond to event hooks. More powerfully, Jan assistants can register their own pubsub, so other entities, like other assistants can respond to your assistants events.

Custom Code​

Jan assistants are Turing complete. This means you can write freeform code, and use any dependencies, when customizing your assistant.

import {events, models} from "@janhq/core"
import {retrieval} from "@hiro/best-rag-ever" // This can be featured on Jan hub but install from npm

events.on('assistant:asst_abc123', (event) => async {
const result = models[0].process(event)
events.emit("assistant:asst_abc123", result)
resolve()
})

Tools​

Coming soon

Functions​

Coming soon

Files​

Coming soon