Skip to content

Commit 03a73b1

Browse files
committed
[refactor][prompt] prompt support custom format (#271)
* [feat][prompt] prompt support custom format * [feat][prompt] prompt support custom format * [feat][prompt] prompt support custom format * [feat][prompt] prompt support custom format * [feat][prompt] prompt support custom format * [feat][prompt] prompt support custom format * [feat][prompt] prompt support custom format * [feat][prompt] prompt support custom format * [feat][prompt] prompt support custom format * [feat][prompt] prompt support custom format * [feat][prompt] prompt support custom format
1 parent 5e00a32 commit 03a73b1

File tree

20 files changed

+656
-59
lines changed

20 files changed

+656
-59
lines changed

backend/kitex_gen/coze/loop/prompt/domain/prompt/prompt.go

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

backend/kitex_gen/coze/loop/prompt/openapi/coze.loop.prompt.openapi.go

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

backend/modules/prompt/application/convertor/prompt.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,8 @@ func TemplateTypeDTO2DO(dto prompt.TemplateType) entity.TemplateType {
121121
return entity.TemplateTypeJinja2
122122
case prompt.TemplateTypeGoTemplate:
123123
return entity.TemplateTypeGoTemplate
124+
case prompt.TemplateTypeCustomTemplateM:
125+
return entity.TemplateTYpeCustomTemplateM
124126
default:
125127
return entity.TemplateTypeNormal
126128
}

backend/modules/prompt/application/convertor/prompt_test.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -687,6 +687,11 @@ func TestTemplateTypeDTO2DO(t *testing.T) {
687687
dto: prompt.TemplateTypeGoTemplate,
688688
want: entity.TemplateTypeGoTemplate,
689689
},
690+
{
691+
name: "custom template m type",
692+
dto: prompt.TemplateTypeCustomTemplateM,
693+
want: entity.TemplateTYpeCustomTemplateM,
694+
},
690695
{
691696
name: "unknown template type defaults to normal",
692697
dto: prompt.TemplateType("unknown"),
@@ -774,6 +779,27 @@ func TestPromptTemplateWithDifferentTypes(t *testing.T) {
774779
},
775780
},
776781
},
782+
{
783+
name: "custom template m",
784+
dto: &prompt.PromptTemplate{
785+
TemplateType: ptr.Of(prompt.TemplateTypeCustomTemplateM),
786+
Messages: []*prompt.Message{
787+
{
788+
Role: ptr.Of(prompt.RoleUser),
789+
Content: ptr.Of("Hello world"),
790+
},
791+
},
792+
},
793+
want: &entity.PromptTemplate{
794+
TemplateType: entity.TemplateTYpeCustomTemplateM,
795+
Messages: []*entity.Message{
796+
{
797+
Role: entity.RoleUser,
798+
Content: ptr.Of("Hello world"),
799+
},
800+
},
801+
},
802+
},
777803
}
778804

779805
for _, tt := range tests {

backend/modules/prompt/application/debug_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ func TestPromptDebugApplicationImpl_DebugStreaming(t *testing.T) {
6565
mockDebugLogRepo.EXPECT().SaveDebugLog(gomock.Any(), gomock.Any()).Return(nil)
6666
mockPromptSvc := servicemocks.NewMockIPromptService(ctrl)
6767
mockPromptSvc.EXPECT().MCompleteMultiModalFileURL(gomock.Any(), gomock.Any(), nil).Return(nil)
68-
mockPromptSvc.EXPECT().MConvertBase64ToFileURL(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes()
68+
mockPromptSvc.EXPECT().MConvertBase64DataURLToFileURL(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes()
6969
mockPromptSvc.EXPECT().ExecuteStreaming(gomock.Any(), gomock.Any()).DoAndReturn(func(ctx context.Context, param service.ExecuteStreamingParam) (*entity.Reply, error) {
7070
for _, v := range mockContent {
7171
param.ResultStream <- &entity.Reply{
@@ -127,7 +127,7 @@ func TestPromptDebugApplicationImpl_DebugStreaming(t *testing.T) {
127127
mockDebugLogRepo.EXPECT().SaveDebugLog(gomock.Any(), gomock.Any()).Return(nil)
128128
mockPromptSvc := servicemocks.NewMockIPromptService(ctrl)
129129
mockPromptSvc.EXPECT().MCompleteMultiModalFileURL(gomock.Any(), gomock.Any(), nil).Return(nil)
130-
mockPromptSvc.EXPECT().MConvertBase64ToFileURL(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes()
130+
mockPromptSvc.EXPECT().MConvertBase64DataURLToFileURL(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes()
131131
mockPromptSvc.EXPECT().ExecuteStreaming(gomock.Any(), gomock.Any()).DoAndReturn(func(ctx context.Context, param service.ExecuteStreamingParam) (*entity.Reply, error) {
132132
for _, v := range mockContent {
133133
param.ResultStream <- &entity.Reply{
@@ -250,7 +250,7 @@ func TestPromptDebugApplicationImpl_DebugStreaming(t *testing.T) {
250250
}, nil
251251
})
252252
convertErr := errors.New("convert error")
253-
mockPromptSvc.EXPECT().MConvertBase64ToFileURL(gomock.Any(), gomock.Any(), gomock.Any()).Return(convertErr)
253+
mockPromptSvc.EXPECT().MConvertBase64DataURLToFileURL(gomock.Any(), gomock.Any(), gomock.Any()).Return(convertErr)
254254
mockBenefitSvc := benefitmocks.NewMockIBenefitService(ctrl)
255255
mockBenefitSvc.EXPECT().CheckPromptBenefit(gomock.Any(), gomock.Any()).Return(&benefit.CheckPromptBenefitResult{}, nil)
256256
mockAuth := rpcmocks.NewMockIAuthProvider(ctrl)
@@ -292,7 +292,7 @@ func TestPromptDebugApplicationImpl_DebugStreaming(t *testing.T) {
292292
mockDebugLogRepo.EXPECT().SaveDebugLog(gomock.Any(), gomock.Any()).Return(nil)
293293
mockPromptSvc := servicemocks.NewMockIPromptService(ctrl)
294294
mockPromptSvc.EXPECT().MCompleteMultiModalFileURL(gomock.Any(), gomock.Any(), nil).Return(nil)
295-
mockPromptSvc.EXPECT().MConvertBase64ToFileURL(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes()
295+
mockPromptSvc.EXPECT().MConvertBase64DataURLToFileURL(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes()
296296
mockPromptSvc.EXPECT().ExecuteStreaming(gomock.Any(), gomock.Any()).DoAndReturn(func(ctx context.Context, param service.ExecuteStreamingParam) (*entity.Reply, error) {
297297
panic("mock panic")
298298
})

backend/modules/prompt/application/execute_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ func TestPromptExecuteApplicationImpl_ExecuteInternal(t *testing.T) {
110110

111111
mockPromptService := servicemocks.NewMockIPromptService(ctrl)
112112
mockPromptService.EXPECT().Execute(gomock.Any(), gomock.Any()).Return(mockReply, nil)
113-
mockPromptService.EXPECT().MConvertBase64ToFileURL(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil)
113+
mockPromptService.EXPECT().MConvertBase64DataURLToFileURL(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil)
114114

115115
return fields{
116116
promptService: mockPromptService,
@@ -148,7 +148,7 @@ func TestPromptExecuteApplicationImpl_ExecuteInternal(t *testing.T) {
148148

149149
mockPromptService := servicemocks.NewMockIPromptService(ctrl)
150150
mockPromptService.EXPECT().Execute(gomock.Any(), gomock.Any()).Return(mockReply, nil)
151-
mockPromptService.EXPECT().MConvertBase64ToFileURL(gomock.Any(), gomock.Any(), gomock.Any()).Return(errors.New("convert error"))
151+
mockPromptService.EXPECT().MConvertBase64DataURLToFileURL(gomock.Any(), gomock.Any(), gomock.Any()).Return(errors.New("convert error"))
152152

153153
return fields{
154154
promptService: mockPromptService,
@@ -225,7 +225,7 @@ func TestPromptExecuteApplicationImpl_ExecuteInternal(t *testing.T) {
225225

226226
mockPromptService := servicemocks.NewMockIPromptService(ctrl)
227227
mockPromptService.EXPECT().Execute(gomock.Any(), gomock.Any()).Return(mockReply, nil)
228-
mockPromptService.EXPECT().MConvertBase64ToFileURL(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil)
228+
mockPromptService.EXPECT().MConvertBase64DataURLToFileURL(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil)
229229

230230
return fields{
231231
promptService: mockPromptService,
@@ -269,7 +269,7 @@ func TestPromptExecuteApplicationImpl_ExecuteInternal(t *testing.T) {
269269

270270
mockPromptService := servicemocks.NewMockIPromptService(ctrl)
271271
mockPromptService.EXPECT().Execute(gomock.Any(), gomock.Any()).Return(mockReply, nil)
272-
mockPromptService.EXPECT().MConvertBase64ToFileURL(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil)
272+
mockPromptService.EXPECT().MConvertBase64DataURLToFileURL(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil)
273273

274274
return fields{
275275
promptService: mockPromptService,

backend/modules/prompt/application/openapi_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2361,7 +2361,7 @@ func TestPromptOpenAPIApplicationImpl_doExecute(t *testing.T) {
23612361
},
23622362
}
23632363
mockPromptService.EXPECT().Execute(gomock.Any(), gomock.Any()).Return(expectedReply, nil)
2364-
mockPromptService.EXPECT().MConvertBase64ToFileURL(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil)
2364+
mockPromptService.EXPECT().MConvertBase64DataURLToFileURL(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil)
23652365

23662366
return fields{
23672367
promptService: mockPromptService,
@@ -2457,7 +2457,7 @@ func TestPromptOpenAPIApplicationImpl_doExecute(t *testing.T) {
24572457
},
24582458
}
24592459
mockPromptService.EXPECT().Execute(gomock.Any(), gomock.Any()).Return(expectedReply, nil)
2460-
mockPromptService.EXPECT().MConvertBase64ToFileURL(gomock.Any(), gomock.Any(), gomock.Any()).Return(errors.New("convert error"))
2460+
mockPromptService.EXPECT().MConvertBase64DataURLToFileURL(gomock.Any(), gomock.Any(), gomock.Any()).Return(errors.New("convert error"))
24612461

24622462
return fields{
24632463
promptService: mockPromptService,
@@ -2810,7 +2810,7 @@ func TestPromptOpenAPIApplicationImpl_Execute(t *testing.T) {
28102810
},
28112811
}
28122812
mockPromptService.EXPECT().Execute(gomock.Any(), gomock.Any()).Return(expectedReply, nil)
2813-
mockPromptService.EXPECT().MConvertBase64ToFileURL(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil)
2813+
mockPromptService.EXPECT().MConvertBase64DataURLToFileURL(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil)
28142814

28152815
mockCollector := collectormocks.NewMockICollectorProvider(ctrl)
28162816
mockCollector.EXPECT().CollectPTaaSEvent(gomock.Any(), gomock.Any()).Return()
@@ -2904,7 +2904,7 @@ func TestPromptOpenAPIApplicationImpl_Execute(t *testing.T) {
29042904
},
29052905
}
29062906
mockPromptService.EXPECT().Execute(gomock.Any(), gomock.Any()).Return(expectedReply, nil)
2907-
mockPromptService.EXPECT().MConvertBase64ToFileURL(gomock.Any(), gomock.Any(), gomock.Any()).Return(errors.New("convert error"))
2907+
mockPromptService.EXPECT().MConvertBase64DataURLToFileURL(gomock.Any(), gomock.Any(), gomock.Any()).Return(errors.New("convert error"))
29082908

29092909
mockCollector := collectormocks.NewMockICollectorProvider(ctrl)
29102910
mockCollector.EXPECT().CollectPTaaSEvent(gomock.Any(), gomock.Any()).Return()
@@ -3450,7 +3450,7 @@ func TestPromptOpenAPIApplicationImpl_ExecuteStreaming(t *testing.T) {
34503450
assert.Len(t, calls, 0)
34513451
},
34523452
setupConvertMock: func(mockSvc *servicemocks.MockIPromptService) {
3453-
mockSvc.EXPECT().MConvertBase64ToFileURL(gomock.Any(), gomock.Any(), gomock.Any()).Return(errors.New("convert error"))
3453+
mockSvc.EXPECT().MConvertBase64DataURLToFileURL(gomock.Any(), gomock.Any(), gomock.Any()).Return(errors.New("convert error"))
34543454
},
34553455
},
34563456
{
@@ -4317,7 +4317,7 @@ func TestPromptOpenAPIApplicationImpl_ExecuteStreaming(t *testing.T) {
43174317
if tt.setupConvertMock != nil {
43184318
tt.setupConvertMock(mockSvc)
43194319
} else {
4320-
mockSvc.EXPECT().MConvertBase64ToFileURL(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes()
4320+
mockSvc.EXPECT().MConvertBase64DataURLToFileURL(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes()
43214321
}
43224322
}
43234323
ttArgs := tt.argsGetter(ctrl)

backend/modules/prompt/application/wire.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import (
3636

3737
var (
3838
promptDomainSet = wire.NewSet(
39+
service.NewPromptFormatter,
3940
service.NewPromptService,
4041
repo.NewManageRepo,
4142
repo.NewLabelRepo,

backend/modules/prompt/application/wire_gen.go

Lines changed: 9 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

backend/modules/prompt/domain/entity/prompt_detail.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,10 @@ type PromptTemplate struct {
4343
type TemplateType string
4444

4545
const (
46-
TemplateTypeNormal TemplateType = "normal"
47-
TemplateTypeJinja2 TemplateType = "jinja2"
48-
TemplateTypeGoTemplate TemplateType = "go_template"
46+
TemplateTypeNormal TemplateType = "normal"
47+
TemplateTypeJinja2 TemplateType = "jinja2"
48+
TemplateTypeGoTemplate TemplateType = "go_template"
49+
TemplateTYpeCustomTemplateM TemplateType = "custom_template_m"
4950
)
5051

5152
type Message struct {

0 commit comments

Comments
 (0)