Assistant
The Assistant is the conversational interface to the Diafunc platform. You describe what you want in plain language and the assistant answers, working against your project's data, entities, and analyses on your behalf. It can read project content, run functions, and explain results, so a conversation can carry a task from a question all the way to a finished table or model without you leaving the chat.
Every conversation runs in the context of a project and is subject to the same permissions as the rest of the platform: the assistant can only touch what your account and token are allowed to touch.
Where to use it
The chat page: open the assistant at /chat for a standalone conversation, or at /chat/<projectId>/<projectBranch> to scope the conversation to a specific project and branch. A sidebar lists your past sessions so you can pick up where you left off.
In the Lab: every project's Lab has a built-in Assistant tab. The Assistant already knows which project and branch you are in, so questions land directly against the data and entities in front of you. From the automatic-analysis views you can also send a chapter or result straight into the chat as a grounded prompt.
Ask about an analysis: after an analysis runs, the Ask button opens a chat session scoped to that analysis, with the findings already in context. Follow-up questions land against the specific results of your run rather than the project in general.
Sessions
Each conversation is a session with its own message history. A new session starts the moment you send your first message; from then on the assistant remembers the earlier turns in that session.
You can list your sessions, rename a session to something memorable, show its full message history, and delete sessions you no longer need. On the chat page these controls live in the session sidebar; from the command line and the API they are available as explicit commands and endpoints.
Streaming
Answers are streamed: the response appears token-by-token as it is generated rather than arriving all at once. The chat surfaces render this incrementally, and the command line and API expose it as a server-sent-events stream so you can consume the reply as it is produced. A blocking mode that returns the complete answer in one response is also available when streaming is not needed.
Rating answers
Each answer has a thumbs up and a thumbs down beside Copy and Retry. A thumbs down opens an optional question about what was wrong: the answer was wrong, out of date, did not answer your question, or was too vague, plus a comment of your own. Your rating stays visible on the answer, and clicking the same thumb again takes it back. Ratings go to the Diafunc team, who use the unhelpful answers to fill gaps in what the assistant knows.
Uploading data and context
You can attach a file to a conversation: pick it with the paperclip button or drag it onto the input box. Any file Diafunc can import works here, the same more than 45 file formats an upload accepts, from CSV and Excel to ARFF, MATLAB or SAS files, and the attachment becomes part of the conversation. The assistant is told the file's name, where it was imported, and its columns, so you can ask which columns are available straight away.
Where the file goes depends on the conversation. In a conversation about an analysis that has not run yet, the file becomes that analysis's data, ready to be analyzed. If the analysis has already run, for example one you opened with Ask, the chat asks what the file is for when you attach it: use it as the analysis's new data, which replaces the data its current results came from so you can rerun it on the newer data, or keep it as a separate table in the analysis's project. In any other project-scoped conversation the file is imported as a new Table entity in the project, appears in the Lab, and the chat links to it.
A conversation needs a project or an analysis before you can attach a file. On the plain chat page, ask the assistant to start an analysis or create a project first.
Starting an analysis in the chat
The assistant can set up and run an automatic analysis for you. Ask for an analysis and give it a name, attach your data file, tell it which column or columns to predict or explain, and ask it to run. It creates the analysis, imports the file as its data, reads back the columns, sets your targets, and queues the run; the analysis notebook fills in as results arrive. Before it runs, it names the depth the run will use, its hours and credit budget, and offers the same depth presets as the Analyze page. Express is selected for an account's first analysis, Standard afterwards.
To rerun an analysis on newer data later, open a conversation about it, attach the new file, choose to use it as the analysis's new data, and ask the assistant to run it again. One conversation works on one analysis: asking for another analysis in the same conversation moves the conversation to the new one, so start a new chat to keep two analyses separate.
If a run of the analysis is already in progress when you ask for another, the assistant says so and asks whether to cancel it first or run both, since a second run pays for the fit twice: the same choice the Lab's Re-run offers. A change of depth or targets applies to the next run, not to one already under way.
Voice mode
The microphone button in the chat input starts a hands-free voice conversation: speak your question, the assistant transcribes it and sends it, the reply is read out loud as it streams in, and listening resumes automatically when the answer finishes. Press the button again to stop voice mode at any time, and grant microphone access in your browser when asked.
Speech processing happens on your device: both speech recognition and speech synthesis run as compact models inside your browser (using GPU acceleration where the browser supports it), so your audio is never uploaded. Only the transcribed text of your message is sent to the assistant, exactly as if you had typed it. The models are downloaded once on first use, with a progress indicator while they load. Transcription currently understands English.
The model behind it
Diafunc does not disclose which language model answers in the assistant, which model family it belongs to, or which provider serves it, and the assistant declines questions on the subject. That choice is infrastructure: it is made on operational grounds and revised when those grounds change.
To write a reply, your message and the context the assistant retrieves are sent to a third-party language-model provider. Your chat sessions are stored in Diafunc's own storage. None of this limits what the assistant says about Diafunc's own technology: it talks freely about Ufinq, symbolic regression, and the rest of the platform.
Usage and credit metering
The assistant is metered by token usage. Every message consumes input tokens for the prompt and context the assistant reads, and output tokens for the reply it generates. Input tokens are billed at 0.01667 credits per 1,000 tokens and output tokens at 0.06667 credits per 1,000 tokens, so longer conversations and larger attached context cost more.
You can inspect how many tokens a conversation used at any time: the streaming and blocking responses report the input and output token counts for each turn, and a dedicated usage view aggregates your consumption. See Credits for how credits are priced and replenished.
From the command line
The diafunc CLI exposes the assistant under the chat command group. Send a single message, stream a reply, upload context, manage sessions, and check your token usage, or run diafunc chat with no subcommand for an interactive REPL.
Using the assistant from the CLI
# Ask a one-off question in the context of a project diafunc chat send "Which columns in the sales table have missing values?" \ --project my-project --branch main # Stream the answer token-by-token as it is generated diafunc chat stream "Summarise the latest analysis findings" --project my-project # Attach a file so the assistant can reference it diafunc chat upload ./notes.csv # Work with sessions diafunc chat session list diafunc chat session show <sessionId> diafunc chat session rename <sessionId> "Sales review" diafunc chat session delete <sessionId> # Inspect token usage diafunc chat usage # Or start the interactive REPL (\new, \session, \quit) diafunc chat --project my-project