package main import ( "context" "encoding/json" "fmt" "os" "gitea.maximumdirect.net/eric/promptkit" ) type summary struct { PromptID string `json:"prompt_id"` PromptVersion string `json:"prompt_version"` SelectedProfile string `json:"selected_profile"` Model string `json:"model"` MessageCount int `json:"message_count"` } func main() { engine, err := promptkit.NewEngine( promptkit.Config{}, promptkit.WithPromptFile("examples/go-library/prepare/prompt.yaml"), promptkit.WithProfiles(promptkit.Profile{ ID: "offline-example", Endpoint: "https://example.invalid/v1", Model: "offline-model", }), ) if err != nil { exit(err) } prepared, err := engine.Prepare(context.Background(), promptkit.RunRequest{ PromptID: "example.prepare", Inputs: map[string]promptkit.ArtifactRef{ "note": promptkit.Inline("Ada finished the migration review."), }, }) if err != nil { exit(err) } encoder := json.NewEncoder(os.Stdout) encoder.SetIndent("", " ") if err := encoder.Encode(summary{ PromptID: prepared.PromptID, PromptVersion: prepared.PromptVersion, SelectedProfile: prepared.SelectedProfileID, Model: prepared.EffectiveModelParams.Model, MessageCount: len(prepared.Messages), }); err != nil { exit(err) } } func exit(err error) { fmt.Fprintln(os.Stderr, err) os.Exit(1) }