feat: add support for Anthropic Claude 4 models and update SDK to v1.2.0

CHANGES
- Upgrade `anthropic-sdk-go` dependency to version `v1.2.0`.
- Integrate new Anthropic Claude 4 Opus and Sonnet models.
- Remove deprecated Claude 2.0 and 2.1 models from list.
- Adjust model type casting for `anthropic-sdk-go v1.2.0` compatibility.
- Refresh README: announce Claude 4, update date, fix links.
This commit is contained in:
Kayvan Sylvan
2025-05-22 11:26:04 -07:00
parent 50ec02546f
commit c8f9a39a40
4 changed files with 15 additions and 16 deletions

View File

@@ -20,8 +20,8 @@ Fabric is graciously supported by…
[Updates](#updates) • [Updates](#updates) •
[What and Why](#what-and-why) • [What and Why](#what-and-why) •
[Philosophy](#philosophy) • [Philosophy](#philosophy) •
[Installation](#Installation) • [Installation](#installation) •
[Usage](#Usage) • [Usage](#usage) •
[Examples](#examples) • [Examples](#examples) •
[Just Use the Patterns](#just-use-the-patterns) • [Just Use the Patterns](#just-use-the-patterns) •
[Custom Patterns](#custom-patterns) • [Custom Patterns](#custom-patterns) •
@@ -87,9 +87,9 @@ Fabric is graciously supported by…
## Updates ## Updates
> [!NOTE] > [!NOTE]
> April 16, 2025 > May 22, 2025
> >
> - Fabric now supports Grok (from XAI)! Update and use `-S` to select it as your default if you want, or just use the shortcut `-m grok-3-beta`. Enjoy! > - Fabric now supports Anthropic's Claude 4. Read the [blog post from Anthropic](https://www.anthropic.com/news/claude-4).
## What and why ## What and why

2
go.mod
View File

@@ -6,7 +6,7 @@ toolchain go1.24.2
require ( require (
github.com/anaskhan96/soup v1.2.5 github.com/anaskhan96/soup v1.2.5
github.com/anthropics/anthropic-sdk-go v0.2.0-beta.3 github.com/anthropics/anthropic-sdk-go v1.2.0
github.com/atotto/clipboard v0.1.4 github.com/atotto/clipboard v0.1.4
github.com/gabriel-vasile/mimetype v1.4.9 github.com/gabriel-vasile/mimetype v1.4.9
github.com/gin-gonic/gin v1.10.0 github.com/gin-gonic/gin v1.10.0

4
go.sum
View File

@@ -23,8 +23,8 @@ github.com/andybalholm/cascadia v1.3.3 h1:AG2YHrzJIm4BZ19iwJ/DAua6Btl3IwJX+VI4kk
github.com/andybalholm/cascadia v1.3.3/go.mod h1:xNd9bqTn98Ln4DwST8/nG+H0yuB8Hmgu1YHNnWw0GeA= github.com/andybalholm/cascadia v1.3.3/go.mod h1:xNd9bqTn98Ln4DwST8/nG+H0yuB8Hmgu1YHNnWw0GeA=
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8=
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4=
github.com/anthropics/anthropic-sdk-go v0.2.0-beta.3 h1:b5t1ZJMvV/l99y4jbz7kRFdUp3BSDkI8EhSlHczivtw= github.com/anthropics/anthropic-sdk-go v1.2.0 h1:RQzJUqaROewrPTl7Rl4hId/TqmjFvfnkmhHJ6pP1yJ8=
github.com/anthropics/anthropic-sdk-go v0.2.0-beta.3/go.mod h1:AapDW22irxK2PSumZiQXYUFvsdQgkwIWlpESweWZI/c= github.com/anthropics/anthropic-sdk-go v1.2.0/go.mod h1:AapDW22irxK2PSumZiQXYUFvsdQgkwIWlpESweWZI/c=
github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de h1:FxWPpzIjnTlhPwqqXc4/vE0f7GvRjuAsbW+HOIe8KnA= github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de h1:FxWPpzIjnTlhPwqqXc4/vE0f7GvRjuAsbW+HOIe8KnA=
github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de/go.mod h1:DCaWoUhZrYW9p1lxo/cm8EmUOOzAPSEZNGF2DK1dJgw= github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de/go.mod h1:DCaWoUhZrYW9p1lxo/cm8EmUOOzAPSEZNGF2DK1dJgw=
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=

View File

@@ -31,13 +31,12 @@ func NewClient() (ret *Client) {
ret.maxTokens = 4096 ret.maxTokens = 4096
ret.defaultRequiredUserMessage = "Hi" ret.defaultRequiredUserMessage = "Hi"
ret.models = []string{ ret.models = []string{
anthropic.ModelClaude3_7SonnetLatest, anthropic.ModelClaude3_7Sonnet20250219, string(anthropic.ModelClaude3_7SonnetLatest), string(anthropic.ModelClaude3_7Sonnet20250219),
anthropic.ModelClaude3_5HaikuLatest, anthropic.ModelClaude3_5Haiku20241022, string(anthropic.ModelClaude3_5HaikuLatest), string(anthropic.ModelClaude3_5Haiku20241022),
anthropic.ModelClaude3_5SonnetLatest, anthropic.ModelClaude3_5Sonnet20241022, string(anthropic.ModelClaude3_5SonnetLatest), string(anthropic.ModelClaude3_5Sonnet20241022),
anthropic.ModelClaude_3_5_Sonnet_20240620, anthropic.ModelClaude3OpusLatest, string(anthropic.ModelClaude_3_5_Sonnet_20240620), string(anthropic.ModelClaude3OpusLatest),
anthropic.ModelClaude_3_Opus_20240229, anthropic.ModelClaude_3_Sonnet_20240229, string(anthropic.ModelClaude_3_Opus_20240229), string(anthropic.ModelClaude_3_Haiku_20240307),
anthropic.ModelClaude_3_Haiku_20240307, anthropic.ModelClaude_2_1, string(anthropic.ModelClaudeOpus4_20250514), string(anthropic.ModelClaudeSonnet4_20250514),
anthropic.ModelClaude_2_0,
} }
return return
@@ -92,7 +91,7 @@ func (an *Client) SendStream(
ctx := context.Background() ctx := context.Background()
stream := an.client.Messages.NewStreaming(ctx, anthropic.MessageNewParams{ stream := an.client.Messages.NewStreaming(ctx, anthropic.MessageNewParams{
Model: opts.Model, Model: anthropic.Model(opts.Model),
MaxTokens: int64(an.maxTokens), MaxTokens: int64(an.maxTokens),
TopP: anthropic.Opt(opts.TopP), TopP: anthropic.Opt(opts.TopP),
Temperature: anthropic.Opt(opts.Temperature), Temperature: anthropic.Opt(opts.Temperature),
@@ -124,7 +123,7 @@ func (an *Client) Send(ctx context.Context, msgs []*goopenai.ChatCompletionMessa
var message *anthropic.Message var message *anthropic.Message
if message, err = an.client.Messages.New(ctx, anthropic.MessageNewParams{ if message, err = an.client.Messages.New(ctx, anthropic.MessageNewParams{
Model: opts.Model, Model: anthropic.Model(opts.Model),
MaxTokens: int64(an.maxTokens), MaxTokens: int64(an.maxTokens),
TopP: anthropic.Opt(opts.TopP), TopP: anthropic.Opt(opts.TopP),
Temperature: anthropic.Opt(opts.Temperature), Temperature: anthropic.Opt(opts.Temperature),