- New workflow: LLMTestWorkflow - Accepts prompt input (e.g., 'say hello') - Calls LLMInferenceActivity to invoke local LLM - Registers LLMInferenceActivity and LLMBatchInferenceActivity - Returns LLM response text Testing shows: ✅ Worker connects to Temporal successfully ✅ Activities register on startup ✅ Ready for LLM invocation tests Usage: tctl workflow start --type LLMTestWorkflow \ --task-queue poimen-taskqueue \ --input '{"prompt":"say hello"}'
36 lines
998 B
Go
36 lines
998 B
Go
package workflow
|
|
|
|
import (
|
|
"time"
|
|
"go.temporal.io/sdk/workflow"
|
|
"github.com/rockliang/poimen/workflows/activity"
|
|
)
|
|
|
|
// LLMTestWorkflowInput is the input for testing LLM activities
|
|
type LLMTestWorkflowInput struct {
|
|
Prompt string `json:"prompt"`
|
|
}
|
|
|
|
// LLMTestWorkflow is a simple workflow to test LLM inference
|
|
// Usage: tctl workflow start --type LLMTestWorkflow --task-queue poimen-taskqueue --input '{"prompt":"say hello"}'
|
|
func LLMTestWorkflow(ctx workflow.Context, input LLMTestWorkflowInput) (string, error) {
|
|
// Call the LLM inference activity
|
|
opts := workflow.ActivityOptions{
|
|
StartToCloseTimeout: 60 * time.Second,
|
|
}
|
|
actCtx := workflow.WithActivityOptions(ctx, opts)
|
|
|
|
actInput := activity.LLMInferenceInput{
|
|
Model: "reasoning",
|
|
UserPrompt: input.Prompt,
|
|
}
|
|
|
|
var result activity.LLMInferenceOutput
|
|
err := workflow.ExecuteActivity(actCtx, activity.LLMInferenceActivity, actInput).Get(actCtx, &result)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
return result.Response, nil
|
|
}
|