feat(llm): support OpenAI Responses API via per-provider api_type
This commit is contained in:
@@ -204,10 +204,18 @@ func (m *Manager) CurrentThinking() string {
|
||||
return m.provider.Thinking
|
||||
}
|
||||
|
||||
func (m *Manager) CurrentAPIType() string {
|
||||
if m.provider.APIType == "" {
|
||||
return config.APITypeChat
|
||||
}
|
||||
return m.provider.APIType
|
||||
}
|
||||
|
||||
func (m *Manager) Info() string {
|
||||
var b strings.Builder
|
||||
fmt.Fprintf(&b, "provider: %s\n", m.CurrentProvider())
|
||||
fmt.Fprintf(&b, "model: %s\n", m.CurrentModel())
|
||||
fmt.Fprintf(&b, "api: %s\n", m.CurrentAPIType())
|
||||
fmt.Fprintf(&b, "thinking: %s\n", m.CurrentThinking())
|
||||
fmt.Fprintf(&b, "providers: %s\n", strings.Join(m.providerNames(), ", "))
|
||||
fmt.Fprintf(&b, "models: %s\n", strings.Join(m.provider.Models, ", "))
|
||||
@@ -223,7 +231,7 @@ func (m *Manager) SetProvider(name string) (string, error) {
|
||||
}
|
||||
m.providerName = name
|
||||
m.provider = provider
|
||||
m.syncAgent(llm.NewOpenAICompatibleClient(provider.BaseURL, provider.APIKey, m.httpClient))
|
||||
m.syncAgent(providerClient(provider, m.httpClient))
|
||||
return "Switched provider.\n" + m.summary(), nil
|
||||
}
|
||||
|
||||
@@ -257,7 +265,14 @@ func (m *Manager) SetThinking(level string) (string, error) {
|
||||
}
|
||||
|
||||
func (m *Manager) summary() string {
|
||||
return fmt.Sprintf("provider: %s\nmodel: %s\nthinking: %s", m.CurrentProvider(), m.CurrentModel(), m.CurrentThinking())
|
||||
return fmt.Sprintf("provider: %s\nmodel: %s\napi: %s\nthinking: %s", m.CurrentProvider(), m.CurrentModel(), m.CurrentAPIType(), m.CurrentThinking())
|
||||
}
|
||||
|
||||
func providerClient(provider config.ProviderConfig, httpClient *http.Client) llm.Provider {
|
||||
if provider.APIType == config.APITypeResponses {
|
||||
return llm.NewOpenAIResponsesClient(provider.BaseURL, provider.APIKey, httpClient)
|
||||
}
|
||||
return llm.NewOpenAICompatibleClient(provider.BaseURL, provider.APIKey, httpClient)
|
||||
}
|
||||
|
||||
func (m *Manager) maxContextTokens() int {
|
||||
|
||||
Reference in New Issue
Block a user