Virtual Assistant

The Virtual Assistant allows you to harness the power of AI to help in Creating CLDs that include the connections and feedback loops applicable to the system being represented. It works by allowing you to connect to different LLM based AI engines, provide prompts, get results as a Causal Loop Diagram with specified polarities, and edit and refine the diagram based on continued interaction with the AI engine. The feature is designed to use an open source gateway to commercially available AI engines that can take advantage of innovations in those engines while also being improved over time through research within the system dynamics community.

Select Open Virtual Assistant Panel from the Window Menu. The panel will open:

The content of the panel is provided by the sd-ai Gateway, and will different based on both your selection of which sd-ai gateway to use and which model from that gateway to us. It may also change as developments in the sd-ai project occur. But there are some elements that will be common.

Note The Virtual Assistant is a dockable panel. See Docking, Undocking, and Closing Panels.

sd-ai URL is the location of the sd-ai Gateway you want to use. By default this is https://ai.iseesystems.com, but you can point it to any endpoint running the node based engine, including a port on your local computer (localhost).

assistant is the name of the assistant at the sd-ai gateway you want to use. The default, called simply default, is the best choice based on the current state of research into getting the best answers about structure from large language models. The alternative may allow you more control over endpoints and prompt engineering as described in sd-ai Gateway.

Assistant Specific Inputs

The remaining inputs are determined by the sd-ai Gateway you have connected to. The are likely to be some basic ones that are always present. These are:

Open AI API Key is the key that is required for processing by the AI Engine - in this case Open AI. If you leave this blank, a default key will be used. The defaults key is likely to work for most queries, though it may have limitations on which of the engine's LLMs can be used. Leaving this blank will only work with the default sd-ai gateway. For any other gateway you will need to specify a key.

Problem Statement  is a description of the problem you are trying to work on. This should be written in plain English. There are no specific requirements for form or content, but generally the more detailed you make this the better the response from the AI engine is likely to be.

Background Knowledge is information that will help in understanding the questions you have about relationships between concepts that the AI can help with. Pasting substantial amounts of reference material may help in guiding the response of the AI engine.

Virtual Assistant is basically the question you want to ask to help generate or refine the model you are working with. Getting started questions like what is the relationship between vacations, productivity and earning may be useful. As you refine the model you are working with questions like how does overtime impact morale might be helpful. As with all interactions with AI engines some amount of experimentation is likely necessary.

Note there are no minimum or maximum lengths for any fields.

Submitting and Refining

When starting with a blank CLD the first time you hit submit it will, if successful, generate a new diagram. The diagram will be drawn on the page and is fully editable as just as any diagram would be. For example the query "How do rabbit and fox population related to one another." might generate the diagram:

And provide the reasoning:

I've added the following new relationships for you...

1. rabbit population -->(+) fox population

More rabbits provide more food for foxes, supporting a larger fox population.

Polarity Reasoning

An increase in rabbit population leads to an increase in fox population due to more available food.

2. fox population -->(-) rabbit population

More foxes lead to more predation on rabbits, reducing the rabbit population.

Polarity Reasoning

An increase in fox population leads to a decrease in rabbit population due to higher predation.

After making additions and adjustments to the diagram to this:

You could ask "How does the rabbit population impact grass availability?" This might yield something like:

Here the connection from grass to rainfall seems like it would occur on a much longer time scale than the rabbit and fox population dynamics so you might want to remove it.

Hopefully it is clear that this is not an "all at once" process. Instead the expectation is that the diagrams would be refined and adjusted till they yield something that is useful.

The background information and problem statement you create will be saved with the model you are working on so that you can reopen the model and pick up where you left off and add additional queries.

Prompt Engineering

Prompt engineering is the creation of text surrounding the problem specific information that gives sufficient instructions to the AI engines to get usable results. As a research topic, this can be approached through contributions to the sd-ai Gateway. Short of that, there is an advanced option available from the Assistant dropdown that allows you to edit the prompts directly to experiment directly in Stella. If you find changes that seem to improve results you can sure your suggestions through the sd-ai project.