github.com/anthropics/anthropic-sdk-go@v1.70.1/betaagent_test.go (about)

     1  // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
     2  
     3  package anthropic_test
     4  
     5  import (
     6  	"context"
     7  	"errors"
     8  	"os"
     9  	"testing"
    10  	"time"
    11  
    12  	"github.com/anthropics/anthropic-sdk-go"
    13  	"github.com/anthropics/anthropic-sdk-go/internal/testutil"
    14  	"github.com/anthropics/anthropic-sdk-go/option"
    15  )
    16  
    17  func TestBetaAgentNewWithOptionalParams(t *testing.T) {
    18  	baseURL := "http://localhost:4010"
    19  	if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
    20  		baseURL = envURL
    21  	}
    22  	if !testutil.CheckTestServer(t, baseURL) {
    23  		return
    24  	}
    25  	client := anthropic.NewClient(
    26  		option.WithBaseURL(baseURL),
    27  		option.WithAPIKey("my-anthropic-api-key"),
    28  	)
    29  	_, err := client.Beta.Agents.New(context.TODO(), anthropic.BetaAgentNewParams{
    30  		Model: anthropic.BetaManagedAgentsModelConfigParams{
    31  			ID: anthropic.BetaManagedAgentsModelClaudeOpus5,
    32  			Effort: anthropic.BetaManagedAgentsModelConfigParamsEffortUnion{
    33  				OfBetaManagedAgentsModelConfigsEffortBetaManagedAgentsEffortLevel: anthropic.String("low"),
    34  			},
    35  			InferenceGeo: anthropic.String("inference_geo"),
    36  			Speed:        anthropic.BetaManagedAgentsModelConfigParamsSpeedStandard,
    37  		},
    38  		Name:        "My First Agent",
    39  		Description: anthropic.String("A general-purpose starter agent."),
    40  		MCPServers: []anthropic.BetaManagedAgentsURLMCPServerParams{{
    41  			Name: "example-mcp",
    42  			Type: anthropic.BetaManagedAgentsURLMCPServerParamsTypeURL,
    43  			URL:  "https://example-server.modelcontextprotocol.io/sse",
    44  		}},
    45  		Metadata: map[string]string{
    46  			"foo": "bar",
    47  		},
    48  		Multiagent: anthropic.BetaManagedAgentsMultiagentParams{
    49  			Agents: []anthropic.BetaManagedAgentsMultiagentRosterEntryParamsUnion{{
    50  				OfString: anthropic.String("agent_011CZkYqphY8vELVzwCUpqiQ"),
    51  			}, {
    52  				OfBetaManagedAgentsMultiagentSelfs: &anthropic.BetaManagedAgentsMultiagentSelfParams{
    53  					Type: anthropic.BetaManagedAgentsMultiagentSelfParamsTypeSelf,
    54  				},
    55  			}},
    56  			Type: anthropic.BetaManagedAgentsMultiagentParamsTypeCoordinator,
    57  		},
    58  		Skills: []anthropic.BetaManagedAgentsSkillParamsUnion{{
    59  			OfAnthropic: &anthropic.BetaManagedAgentsAnthropicSkillParams{
    60  				SkillID: "xlsx",
    61  				Type:    anthropic.BetaManagedAgentsAnthropicSkillParamsTypeAnthropic,
    62  				Version: anthropic.String("1"),
    63  			},
    64  		}},
    65  		System: anthropic.String("You are a general-purpose agent that can research, write code, run commands, and use connected tools to complete the user's task end to end."),
    66  		Tools: []anthropic.BetaAgentNewParamsToolUnion{{
    67  			OfAgentToolset20260401: &anthropic.BetaManagedAgentsAgentToolset20260401Params{
    68  				Type: anthropic.BetaManagedAgentsAgentToolset20260401ParamsTypeAgentToolset20260401,
    69  				Configs: []anthropic.BetaManagedAgentsAgentToolConfigParamsUnion{{
    70  					OfBash: &anthropic.BetaManagedAgentsBashToolConfigParams{
    71  						Enabled: anthropic.Bool(true),
    72  						PermissionPolicy: anthropic.BetaManagedAgentsBashToolConfigParamsPermissionPolicyUnion{
    73  							OfAlwaysAllow: &anthropic.BetaManagedAgentsAlwaysAllowPolicyParam{
    74  								Type: anthropic.BetaManagedAgentsAlwaysAllowPolicyTypeAlwaysAllow,
    75  							},
    76  						},
    77  						Type: anthropic.BetaManagedAgentsBashToolConfigParamsTypeBash,
    78  					},
    79  				}},
    80  				DefaultConfig: anthropic.BetaManagedAgentsAgentToolsetDefaultConfigParams{
    81  					Enabled: anthropic.Bool(true),
    82  					PermissionPolicy: anthropic.BetaManagedAgentsAgentToolsetDefaultConfigParamsPermissionPolicyUnion{
    83  						OfAlwaysAllow: &anthropic.BetaManagedAgentsAlwaysAllowPolicyParam{
    84  							Type: anthropic.BetaManagedAgentsAlwaysAllowPolicyTypeAlwaysAllow,
    85  						},
    86  					},
    87  				},
    88  			},
    89  		}},
    90  		Betas:       []anthropic.AnthropicBeta{anthropic.AnthropicBetaMessageBatches2024_09_24},
    91  		WorkspaceID: anthropic.String("wrkspc_011CZkZaBF1tNoB5wlCeusgy"),
    92  	})
    93  	if err != nil {
    94  		var apierr *anthropic.Error
    95  		if errors.As(err, &apierr) {
    96  			t.Log(string(apierr.DumpRequest(true)))
    97  		}
    98  		t.Fatalf("err should be nil: %s", err.Error())
    99  	}
   100  }
   101  
   102  func TestBetaAgentGetWithOptionalParams(t *testing.T) {
   103  	t.Skip("buildURL drops path-level query params (SDK-4349)")
   104  	baseURL := "http://localhost:4010"
   105  	if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
   106  		baseURL = envURL
   107  	}
   108  	if !testutil.CheckTestServer(t, baseURL) {
   109  		return
   110  	}
   111  	client := anthropic.NewClient(
   112  		option.WithBaseURL(baseURL),
   113  		option.WithAPIKey("my-anthropic-api-key"),
   114  	)
   115  	_, err := client.Beta.Agents.Get(
   116  		context.TODO(),
   117  		"agent_011CZkYpogX7uDKUyvBTophP",
   118  		anthropic.BetaAgentGetParams{
   119  			Version:     anthropic.Int(0),
   120  			Betas:       []anthropic.AnthropicBeta{anthropic.AnthropicBetaMessageBatches2024_09_24},
   121  			WorkspaceID: anthropic.String("wrkspc_011CZkZaBF1tNoB5wlCeusgy"),
   122  		},
   123  	)
   124  	if err != nil {
   125  		var apierr *anthropic.Error
   126  		if errors.As(err, &apierr) {
   127  			t.Log(string(apierr.DumpRequest(true)))
   128  		}
   129  		t.Fatalf("err should be nil: %s", err.Error())
   130  	}
   131  }
   132  
   133  func TestBetaAgentUpdateWithOptionalParams(t *testing.T) {
   134  	baseURL := "http://localhost:4010"
   135  	if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
   136  		baseURL = envURL
   137  	}
   138  	if !testutil.CheckTestServer(t, baseURL) {
   139  		return
   140  	}
   141  	client := anthropic.NewClient(
   142  		option.WithBaseURL(baseURL),
   143  		option.WithAPIKey("my-anthropic-api-key"),
   144  	)
   145  	_, err := client.Beta.Agents.Update(
   146  		context.TODO(),
   147  		"agent_011CZkYpogX7uDKUyvBTophP",
   148  		anthropic.BetaAgentUpdateParams{
   149  			Description: anthropic.String("updated"),
   150  			MCPServers: []anthropic.BetaManagedAgentsURLMCPServerParams{{
   151  				Name: "example-mcp",
   152  				Type: anthropic.BetaManagedAgentsURLMCPServerParamsTypeURL,
   153  				URL:  "https://example-server.modelcontextprotocol.io/sse",
   154  			}},
   155  			Metadata: map[string]string{
   156  				"foo": "string",
   157  			},
   158  			Model: anthropic.BetaManagedAgentsModelConfigParams{
   159  				ID: anthropic.BetaManagedAgentsModelClaudeOpus5,
   160  				Effort: anthropic.BetaManagedAgentsModelConfigParamsEffortUnion{
   161  					OfBetaManagedAgentsModelConfigsEffortBetaManagedAgentsEffortLevel: anthropic.String("low"),
   162  				},
   163  				InferenceGeo: anthropic.String("inference_geo"),
   164  				Speed:        anthropic.BetaManagedAgentsModelConfigParamsSpeedStandard,
   165  			},
   166  			Multiagent: anthropic.BetaManagedAgentsMultiagentParams{
   167  				Agents: []anthropic.BetaManagedAgentsMultiagentRosterEntryParamsUnion{{
   168  					OfString: anthropic.String("agent_011CZkYqphY8vELVzwCUpqiQ"),
   169  				}, {
   170  					OfBetaManagedAgentsMultiagentSelfs: &anthropic.BetaManagedAgentsMultiagentSelfParams{
   171  						Type: anthropic.BetaManagedAgentsMultiagentSelfParamsTypeSelf,
   172  					},
   173  				}},
   174  				Type: anthropic.BetaManagedAgentsMultiagentParamsTypeCoordinator,
   175  			},
   176  			Name: anthropic.String("name"),
   177  			Skills: []anthropic.BetaManagedAgentsSkillParamsUnion{{
   178  				OfAnthropic: &anthropic.BetaManagedAgentsAnthropicSkillParams{
   179  					SkillID: "xlsx",
   180  					Type:    anthropic.BetaManagedAgentsAnthropicSkillParamsTypeAnthropic,
   181  					Version: anthropic.String("1"),
   182  				},
   183  			}},
   184  			System: anthropic.String("You are a general-purpose agent that can research, write code, run commands, and use connected tools to complete the user's task end to end."),
   185  			Tools: []anthropic.BetaAgentUpdateParamsToolUnion{{
   186  				OfAgentToolset20260401: &anthropic.BetaManagedAgentsAgentToolset20260401Params{
   187  					Type: anthropic.BetaManagedAgentsAgentToolset20260401ParamsTypeAgentToolset20260401,
   188  					Configs: []anthropic.BetaManagedAgentsAgentToolConfigParamsUnion{{
   189  						OfBash: &anthropic.BetaManagedAgentsBashToolConfigParams{
   190  							Enabled: anthropic.Bool(true),
   191  							PermissionPolicy: anthropic.BetaManagedAgentsBashToolConfigParamsPermissionPolicyUnion{
   192  								OfAlwaysAllow: &anthropic.BetaManagedAgentsAlwaysAllowPolicyParam{
   193  									Type: anthropic.BetaManagedAgentsAlwaysAllowPolicyTypeAlwaysAllow,
   194  								},
   195  							},
   196  							Type: anthropic.BetaManagedAgentsBashToolConfigParamsTypeBash,
   197  						},
   198  					}},
   199  					DefaultConfig: anthropic.BetaManagedAgentsAgentToolsetDefaultConfigParams{
   200  						Enabled: anthropic.Bool(true),
   201  						PermissionPolicy: anthropic.BetaManagedAgentsAgentToolsetDefaultConfigParamsPermissionPolicyUnion{
   202  							OfAlwaysAllow: &anthropic.BetaManagedAgentsAlwaysAllowPolicyParam{
   203  								Type: anthropic.BetaManagedAgentsAlwaysAllowPolicyTypeAlwaysAllow,
   204  							},
   205  						},
   206  					},
   207  				},
   208  			}},
   209  			Version:     anthropic.Int(1),
   210  			Betas:       []anthropic.AnthropicBeta{anthropic.AnthropicBetaMessageBatches2024_09_24},
   211  			WorkspaceID: anthropic.String("wrkspc_011CZkZaBF1tNoB5wlCeusgy"),
   212  		},
   213  	)
   214  	if err != nil {
   215  		var apierr *anthropic.Error
   216  		if errors.As(err, &apierr) {
   217  			t.Log(string(apierr.DumpRequest(true)))
   218  		}
   219  		t.Fatalf("err should be nil: %s", err.Error())
   220  	}
   221  }
   222  
   223  func TestBetaAgentListWithOptionalParams(t *testing.T) {
   224  	t.Skip("buildURL drops path-level query params (SDK-4349)")
   225  	baseURL := "http://localhost:4010"
   226  	if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
   227  		baseURL = envURL
   228  	}
   229  	if !testutil.CheckTestServer(t, baseURL) {
   230  		return
   231  	}
   232  	client := anthropic.NewClient(
   233  		option.WithBaseURL(baseURL),
   234  		option.WithAPIKey("my-anthropic-api-key"),
   235  	)
   236  	_, err := client.Beta.Agents.List(context.TODO(), anthropic.BetaAgentListParams{
   237  		CreatedAtGte:    anthropic.Time(time.Now()),
   238  		CreatedAtLte:    anthropic.Time(time.Now()),
   239  		IncludeArchived: anthropic.Bool(true),
   240  		Limit:           anthropic.Int(0),
   241  		Page:            anthropic.String("page"),
   242  		Betas:           []anthropic.AnthropicBeta{anthropic.AnthropicBetaMessageBatches2024_09_24},
   243  		WorkspaceID:     anthropic.String("wrkspc_011CZkZaBF1tNoB5wlCeusgy"),
   244  	})
   245  	if err != nil {
   246  		var apierr *anthropic.Error
   247  		if errors.As(err, &apierr) {
   248  			t.Log(string(apierr.DumpRequest(true)))
   249  		}
   250  		t.Fatalf("err should be nil: %s", err.Error())
   251  	}
   252  }
   253  
   254  func TestBetaAgentArchiveWithOptionalParams(t *testing.T) {
   255  	baseURL := "http://localhost:4010"
   256  	if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
   257  		baseURL = envURL
   258  	}
   259  	if !testutil.CheckTestServer(t, baseURL) {
   260  		return
   261  	}
   262  	client := anthropic.NewClient(
   263  		option.WithBaseURL(baseURL),
   264  		option.WithAPIKey("my-anthropic-api-key"),
   265  	)
   266  	_, err := client.Beta.Agents.Archive(
   267  		context.TODO(),
   268  		"agent_011CZkYpogX7uDKUyvBTophP",
   269  		anthropic.BetaAgentArchiveParams{
   270  			Betas:       []anthropic.AnthropicBeta{anthropic.AnthropicBetaMessageBatches2024_09_24},
   271  			WorkspaceID: anthropic.String("wrkspc_011CZkZaBF1tNoB5wlCeusgy"),
   272  		},
   273  	)
   274  	if err != nil {
   275  		var apierr *anthropic.Error
   276  		if errors.As(err, &apierr) {
   277  			t.Log(string(apierr.DumpRequest(true)))
   278  		}
   279  		t.Fatalf("err should be nil: %s", err.Error())
   280  	}
   281  }