Skip to content

Commit 0c6b240

Browse files
committed
fix: send response as a slice
1 parent ce1817a commit 0c6b240

File tree

1 file changed

+18
-14
lines changed

1 file changed

+18
-14
lines changed

llm/binding.go

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@ import (
44
"context"
55
"encoding/json"
66
"net/url"
7-
"strconv"
8-
"strings"
7+
"slices"
98

109
"github.com/rs/zerolog"
1110

@@ -47,7 +46,7 @@ type SnykLLMBindings interface {
4746
// output - a channel that can be used to stream the results
4847
Explain(ctx context.Context, input AIRequest, format OutputFormat, output chan<- string) error
4948
}
50-
type ExplainResult map[int]string
49+
type ExplainResult []string
5150

5251
type DeepCodeLLMBinding interface {
5352
SnykLLMBindings
@@ -66,24 +65,29 @@ type DeepCodeLLMBindingImpl struct {
6665
func (d *DeepCodeLLMBindingImpl) ExplainWithOptions(ctx context.Context, options ExplainOptions) (ExplainResult, error) {
6766
s := d.instrumentor.StartSpan(ctx, "code.ExplainWithOptions")
6867
defer d.instrumentor.Finish(s)
69-
logger := d.logger.With().Str("method", "code.ExplainWithOptions").Logger()
7068
response, err := d.runExplain(s.Context(), options)
7169
explainResult := ExplainResult{}
7270
if err != nil {
7371
return explainResult, err
7472
}
75-
for k, v := range response {
76-
// response key is "explanation1", "explanation2", etc
77-
explanationNumber, parseErr := strconv.Atoi(strings.ReplaceAll(strings.ToLower(k), "explanation", ""))
78-
if parseErr != nil || (explanationNumber-1) < 0 {
79-
logger.Err(parseErr).Msgf("error parsing explanationNumber%s", k)
80-
continue
81-
}
82-
index := explanationNumber - 1
83-
explainResult[index] = v
73+
74+
orderedExplainResults := getOrderedResponse(response)
75+
76+
return orderedExplainResults, nil
77+
}
78+
79+
func getOrderedResponse(explainResponse Explanations) []string {
80+
explainMapKeys := make([]string, 0, len(explainResponse))
81+
for k := range explainResponse {
82+
explainMapKeys = append(explainMapKeys, k)
8483
}
84+
slices.Sort(explainMapKeys)
8585

86-
return explainResult, nil
86+
orderedValues := make([]string, 0, len(explainResponse))
87+
for _, key := range explainMapKeys {
88+
orderedValues = append(orderedValues, explainResponse[key])
89+
}
90+
return orderedValues
8791
}
8892

8993
func (d *DeepCodeLLMBindingImpl) PublishIssues(_ context.Context, _ []map[string]string) error {

0 commit comments

Comments
 (0)