alter_ego.agents package

Submodules

alter_ego.agents.APIThread module

class alter_ego.agents.APIThread.APIThread(*args: Any, **kwargs: Any)[source]

Bases: Thread, ABC

Abstract base class representing any Thread accessible using an API.

get_api_key() str[source]

Retrieve the API key from the environment variable or file.

Returns:

The API key.

Return type:

str

Raises:

ValueError – If API key is neither in the environment nor in the file.

abstract get_model_output(message: str, max_tokens: int) Any[source]

Abstract method to get the model’s output.

Parameters:
  • message (str) – The input message to the model.

  • max_tokens (int) – Maximum number of tokens for the output.

Returns:

The model’s output.

Return type:

Any

abstract send(role: str, message: str, max_tokens: int = 500, **kwargs: Any) str[source]

Abstract method to send a message to a role.

Parameters:
  • role (str) – The role of the message sender.

  • message (str) – The message to send.

  • max_tokens (int) – Maximum number of tokens for the message.

  • kwargs (Any) – Additional keyword arguments.

Returns:

The response message.

Return type:

str

alter_ego.agents.CLIThread module

class alter_ego.agents.CLIThread.CLIThread(**params: Any)[source]

Bases: Thread

Class representing a command-line interface thread.

This is a type of thread that interacts with the user through the command-line interface. Useful for debugging and testing.

send(role: str, message: str, **kwargs: Any) Any[source]

Send a message to the thread and possibly receive a response.

Parameters

rolestr

The role sending the message (“system” or “user”).

messagestr

The message to be sent.

kwargsAny

Additional keyword arguments.

Returns

Any

The response from the thread, if applicable.

Raises

NotImplementedError

If the role is not recognized.

alter_ego.agents.ConstantThread module

class alter_ego.agents.ConstantThread.ConstantThread(**params: Any)[source]

Bases: Thread

Class representing a thread that always returns the same response.

This class extends the Thread class in the alter_ego.structure module.

send(role: str, message: str) str | None[source]

Memorize the message and the assistant’s response, then return the response.

Parameters:
  • role – The role of the sender (“system” or “user”).

  • message – The message to memorize.

Returns:

The assistant’s response if role is “user”, otherwise None.

Return type:

Union[str, None]

Raises:

NotImplementedError – If role is not “system” or “user”.

alter_ego.agents.ExternalThread module

class alter_ego.agents.ExternalThread.ExternalThread(**params: Any)[source]

Bases: Thread

Class representing a thread that is managed by an external program.

send(role, message: str, response: Any | None = None, **kwargs: Any) str[source]

Abstract method that must be implemented by subclasses to send messages.

Parameters:
  • role – Role of the sender, can be ‘system’, ‘user’, or ‘assistant’.

  • message – The message to be sent.

  • kwargs – Additional keyword arguments.

Returns:

Implementation dependent.

alter_ego.agents.GPTThread module

class alter_ego.agents.GPTThread.GPTThread(model, temperature, *args, **kwargs)[source]

Bases: APIThread

Class representing a GPT-3 or GPT-4 Thread.

COST_PER_TOKEN = {'gpt-3.5-turbo': {'completion': 2e-06, 'prompt': 1.5e-06}, 'gpt-4': {'completion': 5.9999999999999995e-05, 'prompt': 2.9999999999999997e-05}}
cost() float[source]

Calculate the cost based on the model used and token usage.

Returns:

The cost for the model.

Return type:

float

Raises:

NotImplementedError – If the model is not supported.

get_api_key() str[source]

Retrieve the OpenAI API key.

Returns:

The OpenAI API key.

Return type:

str

Raises:

ValueError – If API key is not found.

get_model_output(message: str, max_tokens: int) str[source]

Get the model output for the given message.

Parameters:
  • message (str) – The user’s message.

  • max_tokens (int) – Maximum number of tokens for the model to generate.

Returns:

The model output.

Return type:

str

Raises:

RuntimeError – If maximum number of retries is exceeded.

send(role: str, message: str, max_tokens: int = 500, **kwargs: Any) str[source]

Submit the user message, get the response from the model, and memorize it.

Parameters:
  • role (str) – Role of the sender (“user”).

  • message (str) – The user’s message to submit.

  • max_tokens (int) – Maximum number of tokens for the model to generate.

  • kwargs (Any) – Additional keyword arguments.

Returns:

The model’s response.

Return type:

str

alter_ego.agents.TextSynthThread module

class alter_ego.agents.TextSynthThread.TextSynthThread(**kwargs: Any)[source]

Bases: APIThread

Class representing a TextSynth Thread.

get_model_output(message: str, max_tokens: int, extra_params: Dict[str, Any] | None = None) Any[source]

Get the model output for the given message.

Parameters:
  • message (str) – The user’s message.

  • max_tokens (int) – Maximum number of tokens for the model to generate.

  • extra_params (Optional[Dict[str, Any]]) – Additional parameters for the model.

Returns:

The model output.

Return type:

Any

Raises:

RuntimeError – If the maximum number of retries is exceeded.

send(role: str, message: str, max_tokens: int = 500, extra_params: Dict[str, Any] | None = None, **kwargs: Any) str[source]

Submit the user message, receive the model’s response, and memorize it.

Parameters:
  • role (str) – Role of the sender (“user”).

  • message (str) – The user’s message.

  • max_tokens (int) – Maximum number of tokens for the model to generate.

  • extra_params (Optional[Dict[str, Any]]) – Additional parameters for the model.

  • kwargs (Any) – Additional keyword arguments.

Returns:

The model’s response.

Return type:

str

ts_data() Dict[str, Any][source]

Prepare the data for TextSynth API call.

Returns:

Data to be sent in the API request.

Return type:

Dict[str, Any]

Raises:

ValueError – If an invalid history item is encountered.

Module contents