Response

Generate a response using a Large Language Model (LLM)

returnsChatCompletione

Response generation is one of the core uses of generative AI. In the GENTask system, the GENResponse is used to generate text (for example, completing a prompt or answering a question). This task sends a prompt to a Large Language Model (LLM) and returns a response.

Input Modalities
Output

Text Image Audio Video

Text Text (Streaming) Tool Calls Speech Image (Rarely) File (Rarely)

Basic Usage

string prompt = "Explain quantum computing in simple terms.";

string result = await prompt
    .GENResponse()
    .SetModel(OpenAIIModel.GPT4o)
    .ExecuteAsync();

Debug.Log(result);

Streaming

// Streaming
string prompt = "Explain quantum computing in simple terms.";

await prompt
    .GENResponse()
    .SetModel(OpenAIModel.GPT4o)
    .OnStreamText(chunk => Debug.Log(chunk))
    .OnStreamDone(() => Debug.Log("Finished."))
    .StreamAsync();

Vision Request (Image Recognition)

// Vision Request
Texture2D myTexture = myImage.sprite.texture;
string prompt = "Tell me about this image.";

string result = await prompt
    .GENResponse()
    .Attach(myTexture)
    .SetModel(OpenAIModel.GPT4o)
    .ExecuteAsync();

Debug.Log(result);

Structured Outputs

returns StructuredOutput<T>

GENStruct<T> lets you turn natural language prompts into strongly-typed Unity C# objects by guiding the AI to return JSON that matches your class definition.

It's perfect for generating game data like:

  • 📦 Items

  • 🎮 Quests

  • 🗨️ NPC Dialogue Trees

  • 📋 Skill Definitions

  • 🧠 AI Configuration Profiles

Input Modalities
Output

Text Image Audio Video

Structured Outputs (JSON Mode)


Required Annotations:

These attributes are mandatory. Without them, the task will fail to register the schema.

Provider
Required Attributes

OpenAI, Ollama, OpenRouter

[StrictJsonSchema(...)] (on the class) [JsonSchema(...)] (on each property)

Gemini

[JsonSchema(...)] (on the class) [JsonSchema(...)] (on each property)

Generating an RPG Item

using Glitch9.AIDevKit.OpenAI;
using Glitch9.IO.Json.Schema;
using System.Collections.Generic;

[StrictJsonSchema("item_response", Description = "RPG-style inventory item", Strict = true)]
public class GameItem
{
    [JsonSchema("id", Description = "Unique item ID", Required = true)]
    public string Id { get; set; }

    [JsonSchema("name", Description = "Name of the item", Required = true)]
    public string Name { get; set; }

    [JsonSchema("rarity", Description = "Item rarity", Enum = new[] { "Common", "Uncommon", "Rare", "Epic", "Legendary" })]
    public string Rarity { get; set; }

    [JsonSchema("effects", Description = "List of effects applied when used")]
    public List<string> Effects { get; set; }
}


GameItem item = await "Generate a legendary sword with magical effects"
    .GENObject<GameItem>()
    .SetModel(OpenAIModel.GPT4o)
    .SetTemperature(0.4f)
    .ExecuteAsync();

Debug.Log(item.Name + " - " + item.Rarity); // "Blade of Eternity - Legendary"

Generating a Simple Quest

[StrictJsonSchema("quest_response", Description = "Basic RPG quest", Strict = true)]
public class Quest
{
    [JsonSchema("title", Description = "Quest name", Required = true)]
    public string Title { get; set; }

    [JsonSchema("description", Description = "What the player must do", Required = true)]
    public string Description { get; set; }

    [JsonSchema("objective", Description = "Main goal of the quest")]
    public string Objective { get; set; }

    [JsonSchema("rewardXP", Description = "XP rewarded upon completion")]
    public int RewardXP { get; set; }
}

Quest quest = await "Create a side quest for a fantasy game where a farmer asks you to find his lost chicken"
    .GENObject<Quest>()
    .SetModel(OpenAIModel.GPT4o)
    .ExecuteAsync();

Last updated