@Yass
Thanks for the question! That is exactly the most complex part of the project. I began seeking a solution for generating Venus .med files when I started working on HSL generation last year.
Generating HSL is relatively straightforward since it is scripting text. The .med files, however, are essentially sequential and interlinked data structures that map to the visual steps (Aspirate, Dispense, tip handling, etc.) within the Venus GUI.
To tackle this challenge, I prepared my .med files as training samples, cleaned them, and extracted the underlying patterns. I spent a massive amount of effort manually mapping out the exact parameter settings and data structures required for these visual steps. This was an incredibly time-consuming process.
The architecture essentially splits the workload into two phases. First, the AI engine acts as a logical orchestrator—it translates the raw intent (e.g., from a worklist) into a sequence of intermediate, validated instruction data structures. Second, I built an independently developed, pattern-driven generator that takes this clean intermediate data and reconstructs it into the native .med data structures that Venus expects.
For instance, when generating an “Aspirate” step, the engine fills out a pre-mapped data template with data from a series of instructions, including parameters such as volume, liquid class, and others. This ensures the Venus software interprets it natively without throwing structural errors.
Ultimately, it is about extracting patterns from specific data structures, letting AI generate a schema according to intent, and then reconstructing the schema into those data structures.
Below is an example of creating a calculator in Venus software.
The prompt:
Generate a Venus method with a simple calculation function.
Use numerical input boxes for values and a drop-down menu for operators. Clicking "OK" (its value is 1) triggers the calculation, and the result must be displayed.
Display the window using a loop. Initialize variables before the loop, not inside it. Clicking "Cancel" (its value is 2) must trigger a "Break Loop" command.
Thoroughly check that variable names on the UI match those in the calculation logic to prevent calculation, display, or program errors.
Use layout: Deck Layout: Method1.lay
The video demo: https://youtu.be/x1cxZD9JNe4