feat: add retry to chat completion client
This commit is contained in:
@ -16,6 +16,7 @@ import (
|
||||
"forge.cadoles.com/wpetit/clearcase/internal/core/model"
|
||||
"forge.cadoles.com/wpetit/clearcase/internal/core/port"
|
||||
"github.com/bornholm/genai/llm"
|
||||
"github.com/bornholm/genai/llm/prompt"
|
||||
"github.com/num30/go-cache"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
@ -219,7 +220,7 @@ func (m *ForgeManager) getPullRequestSystemPrompt(ctx context.Context, user *mod
|
||||
prTemplate = pullRequestDefaultTemplate
|
||||
}
|
||||
|
||||
systemPrompt, err := llm.PromptTemplate(pullRequestSystemPromptRawTemplate, struct {
|
||||
systemPrompt, err := prompt.Template(pullRequestSystemPromptRawTemplate, struct {
|
||||
PullRequestTemplate string
|
||||
}{
|
||||
PullRequestTemplate: prTemplate,
|
||||
@ -257,7 +258,7 @@ func (m *ForgeManager) getPullRequestUserPrompt(ctx context.Context, user *model
|
||||
return "", errors.WithStack(err)
|
||||
}
|
||||
|
||||
userPrompt, err := llm.PromptTemplate(pullRequestUserPromptRawTemplate, struct {
|
||||
userPrompt, err := prompt.Template(pullRequestUserPromptRawTemplate, struct {
|
||||
Summary string
|
||||
Project *model.Project
|
||||
ProjectLanguages []string
|
||||
@ -350,7 +351,7 @@ func (m *ForgeManager) getIssueSystemPrompt(ctx context.Context, user *model.Use
|
||||
issueTemplate = issueDefaultTemplate
|
||||
}
|
||||
|
||||
systemPrompt, err := llm.PromptTemplate(issueSystemPromptRawTemplate, struct {
|
||||
systemPrompt, err := prompt.Template(issueSystemPromptRawTemplate, struct {
|
||||
IssueTemplate string
|
||||
}{
|
||||
IssueTemplate: issueTemplate,
|
||||
@ -383,7 +384,7 @@ func (m *ForgeManager) getIssueUserPrompt(ctx context.Context, user *model.User,
|
||||
return "", errors.WithStack(err)
|
||||
}
|
||||
|
||||
userPrompt, err := llm.PromptTemplate(issueUserPromptRawTemplate, struct {
|
||||
userPrompt, err := prompt.Template(issueUserPromptRawTemplate, struct {
|
||||
Summary string
|
||||
Project *model.Project
|
||||
ProjectLanguages []string
|
||||
|
@ -2,24 +2,25 @@ package setup
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"forge.cadoles.com/wpetit/clearcase/internal/config"
|
||||
"forge.cadoles.com/wpetit/clearcase/internal/core/service"
|
||||
"github.com/bornholm/genai/llm"
|
||||
"github.com/bornholm/genai/llm/provider"
|
||||
"github.com/bornholm/genai/llm/retry"
|
||||
"github.com/pkg/errors"
|
||||
|
||||
_ "github.com/bornholm/genai/llm/provider/openai"
|
||||
_ "github.com/bornholm/genai/llm/provider/all"
|
||||
"github.com/bornholm/genai/llm/provider/openrouter"
|
||||
_ "github.com/bornholm/genai/llm/provider/openrouter"
|
||||
)
|
||||
|
||||
func NewForgeManagerFromConfig(ctx context.Context, conf *config.Config) (*service.ForgeManager, error) {
|
||||
client, err := provider.Create(ctx,
|
||||
provider.WithConfig(&provider.Config{
|
||||
provider.WithChatCompletionOptions(provider.ClientOptions{
|
||||
Provider: provider.Name(conf.LLM.Provider.Name),
|
||||
BaseURL: conf.LLM.Provider.BaseURL,
|
||||
Key: conf.LLM.Provider.Key,
|
||||
APIKey: conf.LLM.Provider.Key,
|
||||
Model: conf.LLM.Provider.Model,
|
||||
}))
|
||||
if err != nil {
|
||||
@ -38,6 +39,8 @@ func NewForgeManagerFromConfig(ctx context.Context, conf *config.Config) (*servi
|
||||
}
|
||||
}
|
||||
|
||||
client = retry.Wrap(client, time.Second, 5)
|
||||
|
||||
forgeFactories, err := getForgeFactories(conf)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "could not get forge factories")
|
||||
@ -53,8 +56,14 @@ type extendedContextClient struct {
|
||||
extend func(ctx context.Context) context.Context
|
||||
}
|
||||
|
||||
// Embeddings implements llm.Client.
|
||||
func (c *extendedContextClient) Embeddings(ctx context.Context, input string, funcs ...llm.EmbeddingsOptionFunc) (llm.EmbeddingsResponse, error) {
|
||||
ctx = c.extend(ctx)
|
||||
return c.client.Embeddings(ctx, input, funcs...)
|
||||
}
|
||||
|
||||
// ChatCompletion implements llm.Client.
|
||||
func (c *extendedContextClient) ChatCompletion(ctx context.Context, funcs ...llm.ChatCompletionOptionFunc) (llm.CompletionResponse, error) {
|
||||
func (c *extendedContextClient) ChatCompletion(ctx context.Context, funcs ...llm.ChatCompletionOptionFunc) (llm.ChatCompletionResponse, error) {
|
||||
ctx = c.extend(ctx)
|
||||
return c.client.ChatCompletion(ctx, funcs...)
|
||||
}
|
||||
|
Reference in New Issue
Block a user