1// Package openaicompat provides an implementation of the fantasy AI SDK for OpenAI-compatible APIs.
2package openaicompat
3
4import (
5 "charm.land/fantasy"
6 "charm.land/fantasy/providers/openai"
7)
8
9// ProviderOptions represents additional options for the OpenAI-compatible provider.
10type ProviderOptions struct {
11 User *string `json:"user"`
12 ReasoningEffort *openai.ReasoningEffort `json:"reasoning_effort"`
13}
14
15// ReasoningData represents reasoning data for OpenAI-compatible provider.
16type ReasoningData struct {
17 ReasoningContent string `json:"reasoning_content"`
18}
19
20// Options implements the ProviderOptions interface.
21func (*ProviderOptions) Options() {}
22
23// NewProviderOptions creates new provider options for the OpenAI-compatible provider.
24func NewProviderOptions(opts *ProviderOptions) fantasy.ProviderOptions {
25 return fantasy.ProviderOptions{
26 Name: opts,
27 }
28}
29
30// ParseOptions parses provider options from a map for OpenAI-compatible provider.
31func ParseOptions(data map[string]any) (*ProviderOptions, error) {
32 var options ProviderOptions
33 if err := fantasy.ParseOptions(data, &options); err != nil {
34 return nil, err
35 }
36 return &options, nil
37}