This library provides a single, unified, framework-independent library for integration with several popular AI platforms and large language models.
Install the library using Composer:
composer require 1tomany/llm-sdkThere are two ways to use this library:
- Direct Instantiate the AI client you wish to use and send a request object to it. This method is easier to use, but comes with the cost that your application will be less flexible and testable.
- Actions Register the clients you wish to use with a
OneToMany\LlmSdk\Factory\ClientFactoryinstance, inject that instance into each action you wish to take, and interact with the action instead of through the client.
Note: A Symfony bundle is available if you wish to integrate this library into your Symfony applications with autowiring and configuration support.
Review the examples below to get an idea of how the library works.
examples/embeddings/create.phpCreates an embedding vector from a prompt sent to an LLEM (large language embedding model)
examples/files/upload.phpUploads a file to an LLM vendorexamples/files/delete.phpDeletes a file from an LLM vendor
examples/outputs/generate.phpGenerates output from a prompt sent to an LLM
examples/search-stores/create.phpCreates a search store for RAG outputsexamples/search-stores/read.phpDisplays information about a search storeexamples/search-stores/search.phpSearches a store with a given promptexamples/search-stores/files/import.phpImports an uploaded file to a search store
- Anthropic
- Gemini
- Mock
- OpenAI
Note: Each platform refers to generating output (inference) differently; OpenAI uses the word "Responses" while Gemini uses the word "Content". I've decided the word "Output" best represents what a large language model produces in the case of generative models, and "Embedding" in the case of embedding models.
To generate output or create an embedding, you must first compile a "Query". A query is made up of different input components: text prompts, files, a JSON schema, and/or system instructions.
This library allows you to compile a query before sending it to the model for two reasons:
- You can log/analyze the request payload before sending it to the model.
- You can compile individual requests for batching.
| Feature | Anthropic | Gemini | Mock | OpenAI |
|---|---|---|---|---|
| Batches | ||||
| Create | ❌ | ✅ | ✅ | ✅ |
| Read | ❌ | ✅ | ✅ | ✅ |
| Cancel | ❌ | ❌ | ❌ | ❌ |
| Embeddings | ||||
| Create | ❌ | ✅ | ✅ | ✅ |
| Files | ||||
| Upload | ✅ | ✅ | ✅ | ✅ |
| Read | ❌ | ❌ | ❌ | ❌ |
| List | ❌ | ❌ | ❌ | ❌ |
| Download | ❌ | ❌ | ❌ | ❌ |
| Delete | ✅ | ✅ | ✅ | ✅ |
| Outputs | ||||
| Generate | ❌ | ✅ | ✅ | ✅ |
| Queries | ||||
| Compile | ❌ | ✅ | ✅ | ✅ |
| Search Stores | ||||
| Create | ❌ | ✅ | ❌ | ❌ |
| Read | ❌ | ✅ | ❌ | ❌ |
| Search | ❌ | ✅ | ❌ | ❌ |
| ImportFile | ❌ | ✅ | ❌ | ❌ |
The MIT License