/anthropic-claude-golang-sdk

Golang SDK for creating messages using Anthropic Claude API.

Primary LanguageShellOtherNOASSERTION

Anthropic Claude Golang SDK

A Go SDK for interacting with the Anthropic Claude API. This SDK allows you to send structured messages and handle responses from Anthropic's conversational AI models seamlessly within your Go applications.

Table of Contents

Features

  • Easy Integration: Simplifies communication with Anthropic's Claude API using Go.
  • Environment Variable Configuration: Securely manage your API keys and settings.
  • Detailed Logging: Helps in debugging by logging request and response details.
  • Flexible Configuration: Easily adjust parameters like max_tokens, temperature, and model selection via environment variables.

Prerequisites

  • Go: Ensure you have Go installed. You can download it from golang.org.
  • Anthropic API Key: Obtain your API key from the Anthropic Console.

Installation

Cloning the Repository

Clone the repository to your local machine:

git clone https://github.com/aitrailblazer/anthropic-claude-golang-sdk.git
## Configuration

The SDK relies on environment variables for configuration to ensure security and flexibility.

- `ANTHROPIC_API_KEY` (required): Your unique API key for authenticating with Anthropic's API.
- `ANTHROPIC_MODEL` (optional): The model name to use (default is `claude-1.3`).
- `ANTHROPIC_MAX_TOKENS` (optional): Maximum number of tokens to generate in the response (default is 300).

### Setting Environment Variables

On Linux/macOS:

```bash
export ANTHROPIC_API_KEY="your-api-key"
export ANTHROPIC_MODEL="claude-1.3"         # Optional
export ANTHROPIC_MAX_TOKENS=300             # Optional

Usage

Running the Example

An example program is provided to demonstrate how to use the SDK to send messages and handle responses.

Navigate to the Examples Directory:

cd anthropic-claude-golang-sdk/examples

Run the Example:

go run example.go

Example Output:

2024/09/18 00:28:55 Sending POST request to https://api.anthropic.com/v1/messages with body: {"model":"claude-1.3","messages":[{"role":"user","content":"Hello there."},{"role":"assistant","content":"Hi, I'm Claude. How can I help you?"},{"role":"user","content":"Can you explain LLMs in plain English?"}],"max_tokens":100,"temperature":0.7}
2024/09/18 00:28:57 Received response with status: 200 OK
2024/09/18 00:28:57 Response body: {"id":"msg_01YNjiU5mFbKVy8MNHCP7brd","type":"message","role":"assistant","model":"claude-1.3","content":[{"type":"text","text":"Sure, here's a simple explanation of large language models or LLMs:\n\n• LLMs are AI systems that have been trained on massive amounts of text data. They learn patterns and relationships between words and phrases to understand language.\n\n• The more text data they are trained on, the more they can understand the nuances, complexities and ambiguities of natural language. Some recent LLMs have been trained on hundreds of billions of words.\n\n• LLMs can be use"}],"stop_reason":"max_tokens","stop_sequence":null,"usage":{"input_tokens":41,"output_tokens":100}}
Response: Sure, here's a simple explanation of large language models or LLMs:

• LLMs are AI systems that have been trained on massive amounts of text data. They learn patterns and relationships between words and phrases to understand language.

• The more text data they are trained on, the more they can understand the nuances, complexities and ambiguities of natural language. Some recent LLMs have been trained on hundreds of billions of words.

Project Structure

anthropic-claude-golang-sdk/
│
├── api
│   ├── client.go     # Handles API requests, authentication, and logging
│   └── message.go    # Contains the SendMessage function to interact with the Messages API
│
├── models
│   └── message.go    # Defines the request and response structures
├── examples
│   └── example.go    # Demonstrates how to use the SDK
├── go.mod            # Go module file
└── go.sum            # Go module checksum file

API Reference

Refer to the official API documentation for detailed information on available endpoints and parameters.

Logging

The SDK provides detailed logging to assist with debugging. Logs include request and response details.

Error Handling

Comprehensive error handling is implemented to manage API errors and connection issues effectively.

Contributing

Contributions are welcome! Please refer to the contributing guidelines for more information.

License

This project is licensed under the MIT License. See the LICENSE file for details.