Files
Luminary/internal/prediction/inject.go
T
renjue 76ba500417
CI / docker (push) Successful in 2m4s
Initial commit: Luminary AI Gateway
OpenAI-compatible AI gateway with Vue admin UI, multi-provider egress,
ingress key governance, monitoring, and security controls.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-23 21:46:16 +08:00

49 lines
1.1 KiB
Go

package prediction
import (
"crypto/rand"
"encoding/json"
"fmt"
"math/big"
)
func BuildPrompt(workflowJSON string, binding InputBinding, input map[string]any) (map[string]any, error) {
var workflow map[string]any
if err := json.Unmarshal([]byte(workflowJSON), &workflow); err != nil {
return nil, fmt.Errorf("invalid workflow: %w", err)
}
prompt := deepCopyMap(workflow)
for name, target := range binding {
if target == nil || target.Node == "" || target.Field == "" {
continue
}
val, ok := input[name]
if !ok {
continue
}
if name == "seed" {
if iv, ok := val.(int); ok && iv < 0 {
n, _ := rand.Int(rand.Reader, big.NewInt(1<<31-1))
val = int(n.Int64())
}
}
node, ok := prompt[target.Node].(map[string]any)
if !ok {
return nil, fmt.Errorf("node %s not found", target.Node)
}
inputs, ok := node["inputs"].(map[string]any)
if !ok {
return nil, fmt.Errorf("node %s inputs missing", target.Node)
}
inputs[target.Field] = val
}
return prompt, nil
}
func deepCopyMap(src map[string]any) map[string]any {
b, _ := json.Marshal(src)
var dst map[string]any
_ = json.Unmarshal(b, &dst)
return dst
}