54 lines
1.9 KiB
Go
54 lines
1.9 KiB
Go
package anthropic
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/mayswind/ezbookkeeping/pkg/core"
|
|
"github.com/mayswind/ezbookkeeping/pkg/llm/provider"
|
|
"github.com/mayswind/ezbookkeeping/pkg/settings"
|
|
)
|
|
|
|
// AnthropicOfficialMessagesAPIProvider defines the structure of Anthropic official messages API provider
|
|
type AnthropicOfficialMessagesAPIProvider struct {
|
|
AnthropicMessagesAPIProvider
|
|
AnthropicAPIKey string
|
|
AnthropicModelID string
|
|
AnthropicMaxTokens uint32
|
|
}
|
|
|
|
const anthropicMessagesUrl = "https://api.anthropic.com/v1/messages"
|
|
const anthropicAPIVersion = "2023-06-01"
|
|
|
|
// BuildMessagesHttpRequest returns the messages http request by Anthropic official messages API provider
|
|
func (p *AnthropicOfficialMessagesAPIProvider) BuildMessagesHttpRequest(c core.Context, uid int64) (*http.Request, error) {
|
|
req, err := http.NewRequest("POST", anthropicMessagesUrl, nil)
|
|
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
req.Header.Set("anthropic-version", anthropicAPIVersion)
|
|
req.Header.Set("X-Api-Key", p.AnthropicAPIKey)
|
|
|
|
return req, nil
|
|
}
|
|
|
|
// GetModelID returns the model id of Anthropic official messages API provider
|
|
func (p *AnthropicOfficialMessagesAPIProvider) GetModelID() string {
|
|
return p.AnthropicModelID
|
|
}
|
|
|
|
// GetMaxTokens returns the max tokens to generate of Anthropic official messages API provider
|
|
func (p *AnthropicOfficialMessagesAPIProvider) GetMaxTokens() uint32 {
|
|
return p.AnthropicMaxTokens
|
|
}
|
|
|
|
// NewAnthropicLargeLanguageModelProvider creates a new Anthropic large language model provider instance
|
|
func NewAnthropicLargeLanguageModelProvider(llmConfig *settings.LLMConfig, enableResponseLog bool) provider.LargeLanguageModelProvider {
|
|
return newCommonAnthropicMessagesAPILargeLanguageModelAdapter(llmConfig, enableResponseLog, &AnthropicOfficialMessagesAPIProvider{
|
|
AnthropicAPIKey: llmConfig.AnthropicAPIKey,
|
|
AnthropicModelID: llmConfig.AnthropicModelID,
|
|
AnthropicMaxTokens: llmConfig.AnthropicMaxTokens,
|
|
})
|
|
}
|