on main help sign in
fix: prompt prefix
commit086e4ffdb63b002d3d6549ac3f5a58c15ba9dcdb authorKujtim Hoxha <kujtimii.h@gmail.com> dateFri 24 Oct 2025, 09:50 (1 year ago) parent4e2e8ca
3 files changed+19−5
internal/agent/agent.go+7 internal/agent/common_test.go+1−1 internal/agent/coordinator.go+11−4
internal/agent/agent.go+7
@@ -68,6 +68,7 @@ type Model struct {
6868type sessionAgent struct {
6969 largeModel Model
7070 smallModel Model
71+ systemPromptPrefix string
7172 systemPrompt string
7273 tools []fantasy.AgentTool
7374 sessions session.Service
@@ -82,6 +83,7 @@ type sessionAgent struct {
8283type SessionAgentOptions struct {
8384 LargeModel Model
8485 SmallModel Model
86+ SystemPromptPrefix string
8587 SystemPrompt string
8688 DisableAutoSummarize bool
8789 IsYolo bool
@@ -96,6 +98,7 @@ func NewSessionAgent(
9698 return &sessionAgent{
9799 largeModel: opts.LargeModel,
98100 smallModel: opts.SmallModel,
101+ systemPromptPrefix: opts.SystemPromptPrefix,
99102 systemPrompt: opts.SystemPrompt,
100103 sessions: opts.Sessions,
101104 messages: opts.Messages,
@@ -225,6 +228,10 @@ func (a *sessionAgent) Run(ctx context.Context, call SessionAgentCall) (*fantasy
225228 }
226229 }
227230
231+ if a.systemPromptPrefix != "" {
232+ prepared.Messages = append([]fantasy.Message{fantasy.NewSystemMessage(a.systemPromptPrefix)}, prepared.Messages...)
233+ }
234+
228235 var assistantMsg message.Message
229236 assistantMsg, err = a.messages.Create(callContext, call.SessionID, message.CreateMessageParams{
230237 Role: message.Assistant,
internal/agent/common_test.go+1−1
@@ -145,7 +145,7 @@ func testSessionAgent(env env, large, small fantasy.LanguageModel, systemPrompt
145145 DefaultMaxTokens: 10000,
146146 },
147147 }
148− agent := NewSessionAgent(SessionAgentOptions{largeModel, smallModel, systemPrompt, false, true, env.sessions, env.messages, tools})
148+ agent := NewSessionAgent(SessionAgentOptions{largeModel, smallModel, "", systemPrompt, false, true, env.sessions, env.messages, tools})
149149 return agent
150150}
151151
internal/agent/coordinator.go+11−4
@@ -276,11 +276,12 @@ func (c *coordinator) buildAgent(ctx context.Context, prompt *prompt.Prompt, age
276276 return nil, err
277277 }
278278
279+ largeProviderCfg, _ := c.cfg.Providers.Get(large.ModelCfg.Provider)
279280 tools, err := c.buildTools(ctx, agent)
280281 if err != nil {
281282 return nil, err
282283 }
283− return NewSessionAgent(SessionAgentOptions{large, small, systemPrompt, c.cfg.Options.DisableAutoSummarize, c.permissions.SkipRequests(), c.sessions, c.messages, tools}), nil
284+ return NewSessionAgent(SessionAgentOptions{large, small, largeProviderCfg.SystemPromptPrefix, systemPrompt, c.cfg.Options.DisableAutoSummarize, c.permissions.SkipRequests(), c.sessions, c.messages, tools}), nil
284285}
285286
286287func (c *coordinator) buildTools(ctx context.Context, agent config.Agent) ([]fantasy.AgentTool, error) {
@@ -450,11 +451,17 @@ func (c *coordinator) buildAnthropicProvider(baseURL, apiKey string, headers map
450451 break
451452 }
452453 }
453− if hasBearerAuth {
454− apiKey = "" // clear apiKey to avoid using X-Api-Key header
455− }
454+
455+ isBearerToken := strings.HasPrefix(apiKey, "Bearer ")
456456
457457 var opts []anthropic.Option
458+ if apiKey != "" && !hasBearerAuth {
459+ if isBearerToken {
460+ slog.Debug("API key starts with 'Bearer ', using as Authorization header")
461+ headers["Authorization"] = apiKey
462+ apiKey = "" // clear apiKey to avoid using X-Api-Key header
463+ }
464+ }
458465
459466 if apiKey != "" {
460467 // Use standard X-Api-Key header