d3f8bd9
ci(labeler): add azure
Andrey Nering created
d3f8bd9
ci(labeler): add azure
Andrey Nering created
1f41c27
fix: adjustments after rebase
* Implement interface * Fix options cast * Make option structs public
Andrey Nering created
dff590b
feat(gemini): fixes for streaming + thinking
Andrey Nering created
997539c
test: fix gemini test to actually use pro model
Andrey Nering created
44e3901
refactor: use `cmp.Or`
Andrey Nering created
b3b3d58
ci: fix gemini tests when env is not set
Andrey Nering created
19e737f
chore(taskfile): disable cache when running tests
Andrey Nering created
d3f8722
lint: fix linting
Andrey Nering created
f47a599
feat(gemini): implement streaming
Andrey Nering created
a4fd3fa
feat: make google gemini work for basic + tool calls
Andrey Nering created
a446339
chore(go.mod): add `github.com/charmbracelet/x/exp/slice`
Andrey Nering created
5d03ea1
test: add google gemini to test matrix
Andrey Nering created
3f98c67
chore: `anthropic` -> `google`
Andrey Nering created
ff1a249
chore(go.mod): add `google.golang.org/genai`
Andrey Nering created
6c4d2f8
feat: initial google provider
Kujtim Hoxha created
e74fb3f
chore: add options parser (#12)
* chore: add options parser * chore: add options key method * refactor: rename `OptionKey` to `Name` * refactor: rename `OptionsFromMap` to `ParseOptions` * refactor: minimal code improvement --------- Co-authored-by: Andrey Nering <andreynering@users.noreply.github.com>
Kujtim Hoxha and Andrey Nering created
2058c73
chore: add json tags to provider options
kujtimiihoxha created
624cb5b
ci: add issue / pr labeler
Andrey Nering created
d1db2cb
refactor: rename go module to `fantasy` (#11)
Andrey Nering created
b3b0f39
refactor: rename `ProviderOptionsKey` into `OptionsKey`
Andrey Nering created
5097f73
refactor: separate interface into its own type
Andrey Nering created
c6534e4
chore: remove unused lib
kujtimiihoxha created
cc3c955
chore: make provider options an interface
kujtimiihoxha created
2b4cfe6
chore: change how provider options work
kujtimiihoxha created
215059b
Minor fixes (#8)
* chore: remove unused headers * feat: expose provider options * fix: use mapstruct tag * fix: thinking delta * fix: agent prompt * fix: fix reasoning metadata fix: fix reasoning content * fix: test
Kujtim Hoxha created
245142f
refactor: simplify code a little bit
Andrey Nering created
2b2da24
chore(.gitattributes): do not show diffs for cassettes
Andrey Nering created
3f72650
test: add openai gpt o4 mini to the test matrix
Andrey Nering created
2acf7f7
test: make test less intermittent
Andrey Nering created
1aab862
test: add tests for stream with and without tool calls
Andrey Nering created
e00c28f
test: add test with tool
Andrey Nering created
d3c849b
chore: disable go-vcr's internal "sleep" to make tests much faster
Andrey Nering created
3340d64
test: setup go-vcr to start recording real providers interactions
Andrey Nering created
ef0ee71
fix: anthropic finish reason
Kujtim Hoxha created
7f1366b
refactor: use json valid function from `charmbracelet/x/json`
Andrey Nering created
fb35cdf
refactor: revert o use a single go module again
I experimented with multiple Go modules, but the fact is that Go is smart enough to strip out the uneeded modules from the user's `go.mod`, so this is not in fact needed. Also, maintaining a single module is much easier.
Andrey Nering created
ba1c1fd
refactor: move `providers/{openai|anthropic}` out of the `providers/` dir (#5)
Andrey Nering created
5337bf2
ci: configure workflows to be package-by-package
Copied generate script from `charmbracelet/x`.
Andrey Nering created
67ff539
chore: make each package its own go module
* `./ai` (previously root `/`) * `./examples` * `./providers/anthropic` * `./providers/openai`
Andrey Nering created
36e9eae
refactor: move root package into a sub-package `ai`
Andrey Nering created
87c1466
refactor: move json helper to live inside the `openai` package
Andrey Nering created
7712c19
refactor: use `cmp.Or` in more places
Andrey Nering created
1a32307
refactor: change provider options structs to be private / internal
These struct types don't make sense to be part of the public API. They are only used internally to map options to the actual provider SDKs.
Andrey Nering created
2e53c78
refactor: move each provider into its own package
Reasoning for this is: 1. Users can import only those they want, and the Go compiler won't compile the external library the user don't need. 2. This simplify the API and makes it follow the Go conventions better: * `ai.NewOpenAiProvider` -> `openai.New` * `ai.WithOpenAiAPIKey` -> `openai.WithAPIKey` * etc.
Andrey Nering created
66fbbb0
refactor: json check func should not be part of the public api
Andrey Nering created
67080cf
refactor: declare func types for agent callbacks
Andrey Nering created
6580e7f
fix(examples): improve sdk examples
* Check errors where we weren't checking them * Exit with status 1 on errors
Andrey Nering created
bd29644
refactor: simplify code with `cmp.Or`
Andrey Nering created
7f1ec14
lint: temporarily disable some linters
Andrey Nering created
36ea7d1
lint: preallocate slices
Andrey Nering created