Package: crystalai
Crystal Computing AI Python LibraryThe Crystal Computing AI Python library provides convenient access to the Crystal Computing AI API
from applications written in the Python language. It includes a
pre-defined set of classes for API resources that initialize
themselves dynamically from API responses which makes it compatible
with a wide range of versions of the Crystal Computing AI API.You can find usage examples for the Crystal Computing AI Python library in ourAPI referenceand theCrystal Computing AI Cookbook.CreditThis library is forked from the OpenAI Python Library which is forked from theStripe Python Library.InstallationTo start, ensure you have Python 3.7.1 or newer. If you just
want to use the package, run:pipinstall--upgradecrystalaiAfter you have installed the package, import it at the top of a file:importcrystalaiTo install this package from source to make modifications to it, run the following command from the root of the repository:pythonsetup.pyinstallOptional dependenciesInstall dependencies forcrystalai.embeddings_utils:pipinstallcrystalai[embeddings]Install support forWeights & Biaseswhich can be used for fine-tuning:pipinstallcrystalai[wandb]Data libraries likenumpyandpandasare not installed by default due to their size. They’re needed for some functionality of this library, but generally not for talking to the API. If you encounter aMissingDependencyError, install them with:pipinstallcrystalai[datalib]UsageThe library needs to be configured with your Crystal Computing AI account's private API key which is available on ourdeveloper platform. Either set it as theCRYSTALAI_API_KEYenvironment variable before using the library:exportCRYSTALAI_API_KEY='crystal_...'Or setcrystalai.api_keyto its value:crystalai.api_key="crystal_..."Examples of how to use this library to accomplish various tasks can be found in theCrystal Computing AI Cookbook. It contains code examples for: classification using fine-tuning, clustering, code search, customizing embeddings, question answering from a corpus of documents. recommendations, visualization of embeddings, and more.Most endpoints support arequest_timeoutparam. This param takes aUnion[float, Tuple[float, float]]and will raise anopenai.error.Timeouterror if the request exceeds that time in seconds (See:https://requests.readthedocs.io/en/latest/user/quickstart/#timeouts).Chat completionsChat models such asgpt-3.5-turboandgpt-4can be called using thechat completions endpoint.completion=crystalai.ChatCompletion.create(model="gpt-3.5-turbo",messages=[{"role":"user","content":"Hello world"}])print(completion.choices[0].message.content)You can learn more in ourchat completions guide.CompletionsText models such asbabbage-002ordavinci-002(and ourlegacy completions models) can be called using the completions endpoint.completion=crystalai.completion.create(model="davinci-002",prompt="Hello world")print(completion.choices[0].text)You can learn more in ourcompletions guide.EmbeddingsEmbeddings are designed to measure the similarity or relevance between text strings. To get an embedding for a text string, you can use following:text_string="sample text"model_id="text-embedding-ada-002"embedding=crystalai.Embedding.create(input=text_string,model=model_id)['data'][0]['embedding']You can learn more in ourembeddings guide.Fine-tuningFine-tuning a model on training data can both improve the results (by giving the model more examples to learn from) and lower the cost/latency of API calls by reducing the need to include training examples in prompts.# Create a fine-tuning job with an already uploaded filecrystalai.FineTuningJob.create(training_file="file-abc123",model="gpt-3.5-turbo")# List 10 fine-tuning jobscrystalai.FineTuningJob.list(limit=10)# Retrieve the state of a fine-tunecrystalai.FineTuningJob.retrieve("ft-abc123")# Cancel a jobcrystalai.FineTuningJob.cancel("ft-abc123")# List up to 10 events from a fine-tuning jobcrystalai.FineTuningJob.list_events(id="ft-abc123",limit=10)# Delete a fine-tuned model (must be an owner of the org the model was created in)crystalai.Model.delete("ft:gpt-3.5-turbo:acemeco:suffix:abc123")You can learn more in ourfine-tuning guide.To log the training results from fine-tuning to Weights & Biases use:crystalai wandb syncFor more information, read thewandb documentationon Weights & Biases.ModerationCrystal Computing AI provides a free Moderation endpoint that can be used to check whether content complies with the Crystal Computing AIcontent policy.moderation_resp=crystalai.Moderation.create(input="Here is some perfectly innocuous text that follows all Crystal Computing AI content policies.")You can learn more in ourmoderation guide.Async APIAsync support is available in the API by prependingato a network-bound method:asyncdefcreate_chat_completion():chat_completion_resp=awaitcrystalai.ChatCompletion.acreate(model="gpt-3.5-turbo",messages=[{"role":"user","content":"Hello world"}])To make async requests more efficient, you can pass in your ownaiohttp.ClientSession, but you must manually close the client session at the end
of your program/event loop:fromaiohttpimportClientSessioncrystalai.aiosession.set(ClientSession())# At the end of your program, close the http sessionawaitcrystalai.aiosession.get().close()Command-line interfaceThis library additionally provides ancrystalaicommand-line utility
which makes it easy to interact with the API from your terminal. Runcrystalai api -hfor usage.# list modelscrystalaiapimodels.list# create a chat completion (gpt-3.5-turbo, gpt-4, etc.)crystalaiapichat_completions.create-mgpt-3.5-turbo-guser"Hello world"# create a completion (text-davinci-003, text-davinci-002, ada, babbage, curie, davinci, etc.)crystalaiapicompletions.create-mada-p"Hello world"# generate images via DALL·E APIcrystalaiapiimage.create-p"two dogs playing chess, cartoon"-n1# using crystalai through a proxycrystalai--proxy=http://proxy.comapimodels.list