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}