Skip to main content

Smarter Translations through LLM Self-Evaluation

Project description


Table of Contents


Notes

Smarter Translations through LLM Self-Evaluation

Elucidate has a Trello board for tracking planned features and issues:


Quick Start

To get started with Elucidate, install the package via pip:

pip install elucidate

Then, you can evaluate text using by importing the global client.

For example, with OpenAI:

from easytl import Elucidate

## Set your API key
Elucidate.set_credentials("openai", "YOUR_API_KEY")

## You can also validate your API keys; evaluation functions will do this automatically
is_valid, e = Elucidate.test_credentials("openai")

evaluated_text = Elucidate.openai_evaluate("山村美紀の独白\nYamamura Miki's Speech", model="gpt-4o-mini", evaluation_instructions="Please suggest a revised English translation based on the original Japanese text. Do not change if the translation is already correct.")

print(evaluated_text) ## Output: "Yamamura Miki's Monologue"

if(__name__ == "__main__"):
    asyncio.run(main())

Installation

Python 3.10+

Elucidate can be installed using pip:

pip install elucidate

This will install Elucidate along with its dependencies and requirements.

These are the dependencies/requirements that will be installed:

setuptools>=61.0
wheel
setuptools_scm>=6.0
tomli
easytl==0.5.0

Features

Elucidate offers seamless integration with several APIs, allowing users to easily switch between services based on their needs. Key features include:

  • Support for multiple APIs including OpenAI, Gemini, and Anthropic.
  • Simple API key and credential management and validation.
  • Cost estimation tools to help manage usage based on text length, evaluation instructions for LLMs, and evaluation services.
  • Highly customizable evaluation options, with each API's original features and more.
  • Lots of optional arguments for additional functionality. Such as decorators, semaphores, and rate-limit delays.

API Usage

Evaluating Text

openai_evaluate, gemini_evaluate, and anthropic_evaluate are LLM functions.

Each method accepts various parameters to customize the evaluation process, such as language, text format, and API-specific features like formality level or temperature. However these vary wildly between services, so it is recommended to check the documentation for each service for more information.

All services offer asynchronous evaluation methods that return a future object for concurrent processing. These methods are suffixed with _async and can be awaited to retrieve the evaluated text.

Instead of receiving the evaluated text directly, you can also use the response_type parameter to get the raw response object, specify a json response where available, or both.

text - Default. Returns the evaluated text.

json - Returns the response as a JSON object. Not all services support this.

raw - Returns the raw response object from the API. This can be useful for accessing additional information or debugging.

raw_json - Returns the raw response object with the text but with the response also a json object. Again, not all services support this.

Generic Translation Methods

Elucidate has generic evaluation methods evaluate and evaluate_async that can be used to evaluation text with any of the supported services. These methods accept the text, service, and kwargs of the respective service as parameters.

Cost Calculation

The calculate_cost method provides an estimate of the cost associated with evaluating a given text with specified settings for each supported service.

num_tokens, cost, model = Elucidate.calculate_cost("This has a lot of tokens.", "openai", model="gpt-4", evaluation_instructions="Translate this text to Japanese.")

Credentials Management

Credentials can be set and validated using set_credentials and test_credentials methods to ensure they are active and correct before submitting evaluation requests.

If you don't provide an api key, the package will attempt to read it from the environment variables. The format for this is as follows:

# This is a dictionary mapping the service names to their respective environment variables.
environment_map = 
{
  ## Gemini evaluation service
  "gemini": "GEMINI_API_KEY",
  
  ## OpenAI evaluation service
  "openai": "OPENAI_API_KEY",
  
  ## Anthropic evaluation service
  "anthropic": "ANTHROPIC_API_KEY",
}

License

This project, Elucidate, is licensed under the GNU Lesser General Public License v2.1 (LGPLv2.1) - see the LICENSE file for complete details.

The LGPL is a permissive copyleft license that enables this software to be freely used, modified, and distributed. It is particularly designed for libraries, allowing them to be included in both open source and proprietary software. When using or modifying Elucidate, you can choose to release your work under the LGPLv2.1 to contribute back to the community or incorporate it into proprietary software as per the license's permissions.


Contribution

Contributions are welcome! I don't have a specific format for contributions, but please feel free to submit a pull request or open an issue if you have any suggestions or improvements.


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

elucidate-0.0.3.1.tar.gz (37.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

elucidate-0.0.3.1-py3-none-any.whl (36.5 kB view details)

Uploaded Python 3

File details

Details for the file elucidate-0.0.3.1.tar.gz.

File metadata

  • Download URL: elucidate-0.0.3.1.tar.gz
  • Upload date:
  • Size: 37.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.15

File hashes

Hashes for elucidate-0.0.3.1.tar.gz
Algorithm Hash digest
SHA256 0d0b72ad949f5442298d644b1d2bf22bbd68f531385c37c3019db421a9e4a381
MD5 519487275c7b176604dbccc73e79a4cb
BLAKE2b-256 836377489c64b502578b28e13f4555808d7a2c61dc77148162732cad430a831f

See more details on using hashes here.

File details

Details for the file elucidate-0.0.3.1-py3-none-any.whl.

File metadata

  • Download URL: elucidate-0.0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 36.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.15

File hashes

Hashes for elucidate-0.0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c546024aad37e87567a7dcd3c3f846caa2efa16273d73b93cd703fac50342859
MD5 ceb2768ce42cd448bf3ac5aa84839c8b
BLAKE2b-256 e69f6334a40ee9a16eff59c21a3020400e1e5c450f563ca5a2c52d4aed4bdafe

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page