1
0
mirror of https://github.com/coalaura/whiskr.git synced 2025-12-02 20:22:52 +00:00
Files
whiskr/openrouter.go

60 lines
1.3 KiB
Go
Raw Normal View History

2025-08-05 03:56:23 +02:00
package main
import (
"context"
2025-08-25 22:45:03 +02:00
"errors"
2025-10-25 15:31:21 +02:00
"net/http"
"time"
2025-08-05 03:56:23 +02:00
"github.com/revrost/go-openrouter"
)
2025-08-14 17:08:45 +02:00
func init() {
openrouter.DisableLogs()
}
2025-08-05 03:56:23 +02:00
func OpenRouterClient() *openrouter.Client {
2025-10-25 15:31:21 +02:00
cc := openrouter.DefaultConfig(env.Tokens.OpenRouter)
cc.XTitle = "Whiskr"
cc.HttpReferer = "https://github.com/coalaura/whiskr"
cc.HTTPClient = &http.Client{
2025-10-25 15:32:10 +02:00
Timeout: time.Duration(env.Settings.Timeout) * time.Second,
2025-10-25 15:31:21 +02:00
}
return openrouter.NewClientWithConfig(*cc)
2025-08-05 03:56:23 +02:00
}
func OpenRouterStartStream(ctx context.Context, request openrouter.ChatCompletionRequest) (*openrouter.ChatCompletionStream, error) {
client := OpenRouterClient()
stream, err := client.CreateChatCompletionStream(ctx, request)
if err != nil {
return nil, err
}
return stream, nil
}
2025-08-11 15:43:00 +02:00
2025-08-14 03:53:14 +02:00
func OpenRouterRun(ctx context.Context, request openrouter.ChatCompletionRequest) (openrouter.ChatCompletionResponse, error) {
client := OpenRouterClient()
2025-08-25 22:45:03 +02:00
response, err := client.CreateChatCompletion(ctx, request)
if err != nil {
return response, err
}
if len(response.Choices) == 0 {
return response, errors.New("no choices")
}
return response, nil
2025-08-14 03:53:14 +02:00
}
2025-08-16 15:15:06 +02:00
func OpenRouterGetGeneration(ctx context.Context, id string) (openrouter.Generation, error) {
client := OpenRouterClient()
2025-08-11 15:43:00 +02:00
2025-08-16 15:15:06 +02:00
return client.GetGeneration(ctx, id)
2025-08-11 15:43:00 +02:00
}