From a2110d533d38cfff11fa28b1afebc1b2e17bf550 Mon Sep 17 00:00:00 2001 From: Alex Pascal Date: Tue, 14 Oct 2025 08:39:46 -0700 Subject: [PATCH 1/3] Return clone of Dotprompt from registry. --- go/go.mod | 4 ++-- go/go.sum | 10 ++++++---- go/internal/registry/registry.go | 4 ++-- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/go/go.mod b/go/go.mod index ce2123a976..34dc075bbc 100644 --- a/go/go.mod +++ b/go/go.mod @@ -9,8 +9,8 @@ retract ( require ( cloud.google.com/go/alloydbconn v1.15.3 - cloud.google.com/go/bigquery v1.67.0 cloud.google.com/go/auth v0.16.2 + cloud.google.com/go/bigquery v1.67.0 cloud.google.com/go/cloudsqlconn v1.17.2 cloud.google.com/go/firestore v1.18.0 cloud.google.com/go/logging v1.13.0 @@ -20,7 +20,7 @@ require ( github.com/anthropics/anthropic-sdk-go v1.9.1 github.com/blues/jsonata-go v1.5.4 github.com/goccy/go-yaml v1.17.1 - github.com/google/dotprompt/go v0.0.0-20250923103342-a8a91d1dff59 + github.com/google/dotprompt/go v0.0.0-20251014011017-8d056e027254 github.com/google/go-cmp v0.7.0 github.com/google/uuid v1.6.0 github.com/invopop/jsonschema v0.13.0 diff --git a/go/go.sum b/go/go.sum index 3a9af3c07c..957dc21d5e 100644 --- a/go/go.sum +++ b/go/go.sum @@ -56,10 +56,10 @@ github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbt github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/anthropics/anthropic-sdk-go v1.4.0 h1:fU1jKxYbQdQDiEXCxeW5XZRIOwKevn/PMg8Ay1nnUx0= github.com/anthropics/anthropic-sdk-go v1.4.0/go.mod h1:AapDW22irxK2PSumZiQXYUFvsdQgkwIWlpESweWZI/c= -github.com/apache/arrow/go/v15 v15.0.2 h1:60IliRbiyTWCWjERBCkO1W4Qun9svcYoZrSLcyOsMLE= -github.com/apache/arrow/go/v15 v15.0.2/go.mod h1:DGXsR3ajT524njufqf95822i+KTh+yea1jass9YXgjA= github.com/anthropics/anthropic-sdk-go v1.9.1 h1:raRhZKmayVSVZtLpLDd6IsMXvxLeeSU03/2IBTerWlg= github.com/anthropics/anthropic-sdk-go v1.9.1/go.mod h1:WTz31rIUHUHqai2UslPpw5CwXrQP3geYBioRV4WOLvE= +github.com/apache/arrow/go/v15 v15.0.2 h1:60IliRbiyTWCWjERBCkO1W4Qun9svcYoZrSLcyOsMLE= +github.com/apache/arrow/go/v15 v15.0.2/go.mod h1:DGXsR3ajT524njufqf95822i+KTh+yea1jass9YXgjA= github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= @@ -205,14 +205,16 @@ github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6 github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/dotprompt/go v0.0.0-20250611200215-bb73406b05ca h1:LuQ8KS5N04c37jyaq6jelLdNi0GfI6QJb8lpnYaDW9Y= github.com/google/dotprompt/go v0.0.0-20250611200215-bb73406b05ca/go.mod h1:dnIk+MSMnipm9uZyPIgptq7I39aDxyjBiaev/OG0W0Y= -github.com/google/flatbuffers v23.5.26+incompatible h1:M9dgRyhJemaM4Sw8+66GHBu8ioaQmyPLg1b8VwK5WJg= -github.com/google/flatbuffers v23.5.26+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/dotprompt/go v0.0.0-20250922193017-eeb62744224e h1:AK/O+vHflqzTehlcUBV6pkwZHCWIc8PrpA6xiiRo9d0= github.com/google/dotprompt/go v0.0.0-20250922193017-eeb62744224e/go.mod h1:k8cjJAQWc//ac/bMnzItyOFbfT01tgRTZGgxELCuxEQ= github.com/google/dotprompt/go v0.0.0-20250922225138-cb24085a67ed h1:xPu5zXopXdj48LXZqU6DosoL0oT7nbddgTMkjWoyHqQ= github.com/google/dotprompt/go v0.0.0-20250922225138-cb24085a67ed/go.mod h1:k8cjJAQWc//ac/bMnzItyOFbfT01tgRTZGgxELCuxEQ= github.com/google/dotprompt/go v0.0.0-20250923103342-a8a91d1dff59 h1:EywQhHXdzYlMKD7Gxl9Ho34c8dQ0meph6FuRN9iENEY= github.com/google/dotprompt/go v0.0.0-20250923103342-a8a91d1dff59/go.mod h1:k8cjJAQWc//ac/bMnzItyOFbfT01tgRTZGgxELCuxEQ= +github.com/google/dotprompt/go v0.0.0-20251014011017-8d056e027254 h1:okN800+zMJOGHLJCgry+OGzhhtH6YrjQh1rluHmOacE= +github.com/google/dotprompt/go v0.0.0-20251014011017-8d056e027254/go.mod h1:k8cjJAQWc//ac/bMnzItyOFbfT01tgRTZGgxELCuxEQ= +github.com/google/flatbuffers v23.5.26+incompatible h1:M9dgRyhJemaM4Sw8+66GHBu8ioaQmyPLg1b8VwK5WJg= +github.com/google/flatbuffers v23.5.26+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= diff --git a/go/internal/registry/registry.go b/go/internal/registry/registry.go index 3037ec4eac..cf434a6158 100644 --- a/go/internal/registry/registry.go +++ b/go/internal/registry/registry.go @@ -312,9 +312,9 @@ func (r *Registry) RegisterHelper(name string, fn any) { r.dotprompt.Helpers[name] = fn } -// Dotprompt returns the dotprompt instance. +// Dotprompt returns a clone of the Dotprompt instance. func (r *Registry) Dotprompt() *dotprompt.Dotprompt { r.mu.RLock() defer r.mu.RUnlock() - return r.dotprompt + return r.dotprompt.Clone() } From 0fb76c1ea31583b69b1e53e0730316fb624ba8d5 Mon Sep 17 00:00:00 2001 From: Alex Pascal Date: Tue, 14 Oct 2025 08:41:06 -0700 Subject: [PATCH 2/3] Update prompt.go --- go/ai/prompt.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/go/ai/prompt.go b/go/ai/prompt.go index aa8f1d481f..95214dd7a6 100644 --- a/go/ai/prompt.go +++ b/go/ai/prompt.go @@ -296,16 +296,18 @@ func (p *prompt) buildRequest(ctx context.Context, input any) (*GenerateActionOp return nil, err } + dp := p.registry.Dotprompt() + messages := []*Message{} - messages, err = renderSystemPrompt(ctx, p.promptOptions, messages, m, input, p.registry.Dotprompt()) + messages, err = renderSystemPrompt(ctx, p.promptOptions, messages, m, input, dp) if err != nil { return nil, err } - messages, err = renderMessages(ctx, p.promptOptions, messages, m, input, p.registry.Dotprompt()) + messages, err = renderMessages(ctx, p.promptOptions, messages, m, input, dp) if err != nil { return nil, err } - messages, err = renderUserPrompt(ctx, p.promptOptions, messages, m, input, p.registry.Dotprompt()) + messages, err = renderUserPrompt(ctx, p.promptOptions, messages, m, input, dp) if err != nil { return nil, err } @@ -547,13 +549,15 @@ func LoadPrompt(r api.Registry, dir, filename, namespace string) Prompt { return nil } - parsedPrompt, err := r.Dotprompt().Parse(string(source)) + dp := r.Dotprompt() + + parsedPrompt, err := dp.Parse(string(source)) if err != nil { slog.Error("Failed to parse file as dotprompt", "file", sourceFile, "error", err) return nil } - metadata, err := r.Dotprompt().RenderMetadata(string(source), &parsedPrompt.PromptMetadata) + metadata, err := dp.RenderMetadata(string(source), &parsedPrompt.PromptMetadata) if err != nil { slog.Error("Failed to render dotprompt metadata", "file", sourceFile, "error", err) return nil From f685e6ba55657ecb83f29be511247f7fab2a8a0a Mon Sep 17 00:00:00 2001 From: Alex Pascal Date: Tue, 14 Oct 2025 08:41:28 -0700 Subject: [PATCH 3/3] Update registry.go --- go/core/api/registry.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go/core/api/registry.go b/go/core/api/registry.go index a7dbe7cb7f..e6126a479c 100644 --- a/go/core/api/registry.go +++ b/go/core/api/registry.go @@ -81,6 +81,6 @@ type Registry interface { // RegisterHelper adds a helper function to the dotprompt instance RegisterHelper(name string, fn any) - // Dotprompt returns the dotprompt instance. + // Dotprompt returns a clone of the Dotprompt instance. Dotprompt() *dotprompt.Dotprompt }