menuSuggestionFlow := genkit.DefineStreamingFlow("menuSuggestionFlow",
func(
ctx context.Context,
input string,
callback func(context.Context, string) error,
) (string, error) {
m := vertexai.Model("gemini-1.5-pro")
if m == nil {
return "", errors.New("menuSuggestionFlow: failed to find model")
}
resp, err := m.Generate(ctx,
ai.NewGenerateRequest(
&ai.GenerationCommonConfig{Temperature: 1},
ai.NewUserTextMessage(fmt.Sprintf(`Suggest an item for the menu of a %s themed restaurant`, input))),
func(ctx context.Context, grc *ai.GenerateResponseChunk) error {
chunk := grc.Text()
if callback != nil {
return callback(ctx, chunk)
}
return nil
})
if err != nil {
return "", err
}
return resp.Text(), nil
})
suggestion, err := menuSuggestionFlow.Run(context.Background(), "French")
if err != nil {
log.Fatalf("Error while executing menuSuggestionFlow: %s", err)
}
log.Print(suggestion)
menuSuggestionFlow.Stream(
context.Background(),
"French",
)(func(sfv *genkit.StreamFlowValue[string, string], err error) bool {
if !sfv.Done {
// fmt.Print(sfv.Output)
log.Printf("Chunk received. Length: %d, Content: '%s'", len(sfv.Output), sfv.Output)
return true
} else {
return false
}
})
menuSuggestionFlow := genkit.DefineStreamingFlow("menuSuggestionFlow",
func(
ctx context.Context,
input string,
callback func(context.Context, string) error,
) (string, error) {
m := vertexai.Model("gemini-1.5-pro")
if m == nil {
return "", errors.New("menuSuggestionFlow: failed to find model")
}
resp, err := m.Generate(ctx,
ai.NewGenerateRequest(
&ai.GenerationCommonConfig{Temperature: 1},
ai.NewUserTextMessage(fmt.Sprintf(`Suggest an item for the menu of a %s themed restaurant`, input))),
func(ctx context.Context, grc *ai.GenerateResponseChunk) error {
chunk := grc.Text()
if callback != nil {
return callback(ctx, chunk)
}
return nil
})
if err != nil {
return "", err
}
return resp.Text(), nil
})
suggestion, err := menuSuggestionFlow.Run(context.Background(), "French")
if err != nil {
log.Fatalf("Error while executing menuSuggestionFlow: %s", err)
}
log.Print(suggestion)
menuSuggestionFlow.Stream(
context.Background(),
"French",
)(func(sfv *genkit.StreamFlowValue[string, string], err error) bool {
if !sfv.Done {
// fmt.Print(sfv.Output)
log.Printf("Chunk received. Length: %d, Content: '%s'", len(sfv.Output), sfv.Output)
return true
} else {
return false
}
})