# **Documentation for the `Anthropic` Class** ## **Overview and Introduction** The `Anthropic` class provides an interface to interact with the Anthropic large language models. This class encapsulates the necessary functionality to request completions from the Anthropic API based on a provided prompt and other configurable parameters. ### **Key Concepts and Terminology** - **Anthropic**: A large language model, akin to GPT-3 and its successors. - **Prompt**: A piece of text that serves as the starting point for model completions. - **Stop Sequences**: Specific tokens or sequences to indicate when the model should stop generating. - **Tokens**: Discrete pieces of information in a text. For example, in English, a token can be as short as one character or as long as one word. ## **Class Definition** ### `Anthropic` ```python class Anthropic: """Anthropic large language models.""" ``` ### Parameters: - `model (str)`: The name of the model to use for completions. Default is "claude-2". - `max_tokens_to_sample (int)`: Maximum number of tokens to generate in the output. Default is 256. - `temperature (float, optional)`: Sampling temperature. A higher value will make the output more random, while a lower value will make it more deterministic. - `top_k (int, optional)`: Sample from the top-k most probable next tokens. Setting this parameter can reduce randomness in the output. - `top_p (float, optional)`: Sample from the smallest set of tokens such that their cumulative probability exceeds the specified value. Used in nucleus sampling to provide a balance between randomness and determinism. - `streaming (bool)`: Whether to stream the output or not. Default is False. - `default_request_timeout (int, optional)`: Default timeout in seconds for API requests. Default is 600. ### **Methods and their Functionality** #### `_default_params(self) -> dict` - Provides the default parameters for calling the Anthropic API. - **Returns**: A dictionary containing the default parameters. #### `generate(self, prompt: str, stop: list[str] = None) -> str` - Calls out to Anthropic's completion endpoint to generate text based on the given prompt. - **Parameters**: - `prompt (str)`: The input text to provide context for the generated text. - `stop (list[str], optional)`: Sequences to indicate when the model should stop generating. - **Returns**: A string containing the model's generated completion based on the prompt. #### `__call__(self, prompt: str, stop: list[str] = None) -> str` - An alternative to the `generate` method that allows calling the class instance directly. - **Parameters**: - `prompt (str)`: The input text to provide context for the generated text. - `stop (list[str], optional)`: Sequences to indicate when the model should stop generating. - **Returns**: A string containing the model's generated completion based on the prompt. ## **Usage Examples** ```python # Import necessary modules and classes from swarms.models import Anthropic import torch # Initialize an instance of the Anthropic class anthropic_instance = Anthropic() # Using the generate method completion_1 = anthropic_instance.generate("What is the capital of France?") print(completion_1) # Using the __call__ method completion_2 = anthropic_instance("How far is the moon from the earth?", stop=["miles", "km"]) print(completion_2) ``` ## **Mathematical Formula** The underlying operations of the `Anthropic` class involve probabilistic sampling based on token logits from the Anthropic model. Mathematically, the process of generating a token \( t \) from the given logits \( l \) can be described by the softmax function: \[ P(t) = \frac{e^{l_t}}{\sum_{i} e^{l_i}} \] Where: - \( P(t) \) is the probability of token \( t \). - \( l_t \) is the logit corresponding to token \( t \). - The summation runs over all possible tokens. The temperature, top-k, and top-p parameters are further used to modulate the probabilities. ## **Additional Information and Tips** - Ensure you have a valid `ANTHROPIC_API_KEY` set as an environment variable or passed during class instantiation. - Always handle exceptions that may arise from API timeouts or invalid prompts. ## **References and Resources** - [Anthropic's official documentation](https://www.anthropic.com/docs) - [Token-based sampling in Language Models](https://arxiv.org/abs/1904.09751) for a deeper understanding of token sampling.