app-v1.7.0
Ironclad/rivetapp-v1.7.0Nov 14, 2023by github-actions[bot]
AI Summary
This major release introduces comprehensive OpenAI Assistants API support with a new OpenAI plugin containing 14 dedicated nodes, along with GPT-4 Turbo and Vision model support. A breaking change switches from the deprecated OpenAI function calling API to the new Tools API, requiring a tool_id that can be attached via the Prompt node's Name/ID input. Additional highlights include new utility nodes (Destructure, Replace Dataset, Assemble Message), UI improvements like graph execution selector and visual wire indicators, and Project Context for secret values.
Key Highlights
- Full OpenAI Assistants API support with new plugin containing 14 nodes (Run Thread, Create Assistant, etc.)
- Support for GPT-4 Turbo and GPT-4 Vision models
- Breaking change: Switched to OpenAI Tools API requiring tool_id (attach via Prompt node Name/ID input)
- New utility nodes: Destructure, Replace Dataset, Assemble Message, URL Reference
- UI improvements: graph execution selector, dotted wires for non-running nodes, port data overlay
Breaking Changes
- Switched from deprecated OpenAI function calling API to new OpenAI Tools API - existing graphs may break as OpenAI API now requires a tool_id to be passed into API calls. The tool call ID can be attached via the 'Name/ID' input of the Prompt node.
New Features
- OpenAI GPT-4 Turbo model support
- OpenAI GPT-4 Vision model support
- OpenAI Assistants API with new OpenAI plugin
- OpenAI seed parameter support
- Force Chat node to run a specific tool (OpenAI)
- OpenAI JSON output mode support
- Assemble Message node for GPT-4 Vision (textual + image parts)
- URL Reference node for GPT-4 Vision image URLs
- Destructure node for extracting multiple paths from objects
- Replace Dataset node for replacing/clearing dataset contents
- Project Context in settings for secret values (not stored in project file)
- Help menu with Discord button
- Graph execution selector bar
- Tooltips on buttons
- Port info overlay shows data that went through
- Edit dataset ID in Data Studio
- Subgraph node value editing
- If/Else and If nodes output 'control-flow-excluded' for unconnected ports by default
- Read File node can read binary files
- Visual improvements: dotted wires for non-running nodes, color-coded chat message types
- Expanded/collapsed folder persistence in graph list
Full Release Notes
## New Features
- Support for new OpenAI GPT-4 Turbo model!
- Support for new OpenAI GPT-4 Vision model!
- Full support for new OpenAI Assistants API! Use the new `OpenAI` plugin (see below) to access all of the new nodes!
- Switched from deprecated OpenAI function calling API to new OpenAI Tools API. ⚠️ This may break existing graphs, as the OpenAI API now requires a `tool_id` to be passed into the API calls. The tool call ID can be attached via the `Name/ID` input of the Prompt node. ⚠️
- New Nodes:
- `Assemble Message` - Used with GPT-4 Vision, this allows you to assemble a single chat message that contains both textual parts and image parts!
- `URL Reference` - Used with GPT-4 Vision and the Assemble Message node, this allows you to reference a URL image instead of uploading an image.
- `Destructure` - A simplified version of the Extract Object Path node, this allows you to extract multiple paths from an object at once, avoiding the need for multiple Extract Object Path nodes.
- `Replace Dataset` - Replace the contents of a dataset with new values, or clear a dataset when no values are passed in.
- Support for new OpenAI `seed` parameter
- Support for forcing a Chat node to run a specific tool (OpenAI)
- Support for OpenAI JSON output mode
- When nodes are not ran, the wire to them now shows as dotted, plus more visual indications!
- Added Project Context to the project settings panel. This allows you to pass in context values (accessible via the Context node) when running in Rivet. This lets you add secret values that won't be shared when you share a project file. Context values are stored in the Rivet application but not the project file.
- Added new Help menu with useful links, and a Discord button to the top bar.
- Added graph execution selector bar - switch between executions of each graph across all nodes easily
- Added useful tooltips to buttons
- Port info overlay now show the data that went through that port as well!
- Can now edit the ID of datasets in the Data Studio
- Certain values can be edited in the editor for a Subgraph node, instead of only connecting values via wires!
- If/Else and If node now outputs `control-flow-excluded` for unconnected ports by default, instead of `undefined`. Existing If/Else and If nodes still will have the old behavior.
- Read File node can now read files as binary, instead of only text.
## OpenAI Plugin
- Added `OpenAI` plugin, which contains all of the new nodes for the OpenAI Assistants API
- New Nodes:
- `Attach Assistant File` - Attaches an existing OpenAI `File` to an Assistant
- `Create Assistant` - Creates a new OpenAI Assistant
- `Create Thread Message` - Appends a message to an OpenAI Thread
- `Delete Assistant` - Deletes an OpenAI Assistant
- `Delete Thread` - Deletes an OpenAI Thread
- `Get Assistant` - Gets an OpenAI Assistant by its ID
- `Get OpenAI File` - Retrieves and OpenAI `File` by its ID
- `Get Thread` - Gets an OpenAI Thread by its ID
- `List Assistants` - Lists all OpenAI Assistants in the account
- `List OpenAI Files` - Lists all OpenAI `Files` in the account
- `List Thread Messages` - Lists all messages in an OpenAI Thread
- `Run Thread`
- This is the main node for running an OpenAI Assistant. It can either run an existing thread that was created, or it can create and run a thread in one step. If you are creating a new thread, you pass in a list of chat messages to start the thread with. If you are running an existing thread, you pass in the thread ID.
- This will run a thread until it has reached a `cancelled`, `cancelling`, `expired`, `failed`, or `completed` state.
- When the thread requires action (state `requires_action`), then a Rivet _subgraph_ will be called. The mapping from function names to Rivet subgraphs is configured in the editor for the Run Thread node. The subgraph receives the following inputs:
- `arguments` - The (parsed) arguments that the LLM is calling for the function
- `input` - Alias for `arguments`
- `name` - The name of the function that the LLM is calling
- `tool_call_id` - The ID of the tool call that the LLM is calling.
- `run_id` - The ID of the run that the LLM is calling.
- `run` - The whole Run object for the thread run.
- The subgraph should return a single Graph Output with an ID of `output` (the default) as the output of the tool call. You do not need to worry about the tool call ID, as it will be mapped correctly.
- If you configure a subgraph to respond to the function call `unknown`, then this graph will be used for all unmapped function calls.
- `Thread Message` - Defines a single message for use with OpenAI Threads. Use an Array node for multiple thread messages.
- `Upload File` - Uploads a file to the OpenAI account. The files can be attached to Assistants or attached to any message with the file ID.
## Changes & Fixes
- Improved performance across the board
- Fix loop controller infinite looping
- Loop controller node now allows _non-default_ input ports to be "Not Ran". This will pass through to the output ports. If any "Default" input port is excluded, then the whole loop controller will not run./
- Nodes that output arrays now say how many elements are in them
- Array node outputs have lines in between the elements
- Chat message type names are color-coded
- Expanded/collapsed folders in graph list are persisted across application launches
- Fixed context menu for graph list going off the screen
- Fixed context menu for graph list not closing
- Fix chat viewer and plugin overlay z-index
- Fix autocomplete and spellcheck appearing on many input fields
- The same project cannot be opened twice, and two projects with the same ID cannot be opened at the same time, to prevent weird issues
- Fix ghost opened projects
- Current Rivet version is now shown in the title and the updates page
- Fixed editing key/value pairs not saving
- Fixed nodes not showing that they were "not ran"
- Fixed port info overlay sticking when dragging wires onto a port
- Importing a graph will center the view on it
- Array node body now shows whether it flattens
- Code node now defaults to `input1` and `output` instead of `input` and `output`
- Fixed node port types being incorrect
- Code now will error if it doesn't return the values it expects
- Fixed Extract Object Path erroring when the input value is undefined or null
- Arrays are now inferred correctly, such as with Trivet test inputs
- OpenAI models are now alphabetical