Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: wkok/openai-clojure
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 0.21.2
Choose a base ref
...
head repository: wkok/openai-clojure
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: main
Choose a head ref
  • 2 commits
  • 7 files changed
  • 2 contributors

Commits on Nov 5, 2024

  1. Copy the full SHA
    ca621cf View commit details
  2. Prepare release 0.22.0

    wkok committed Nov 5, 2024
    Copy the full SHA
    dd47f86 View commit details
Showing with 153 additions and 41 deletions.
  1. +7 −0 CHANGELOG.md
  2. +5 −4 README.md
  3. +1 −1 build.clj
  4. +34 −26 doc/01-usage-openai.md
  5. +9 −9 doc/02-usage-azure.md
  6. +81 −0 src/wkok/openai_clojure/api.clj
  7. +16 −1 test/wkok/openai_clojure/api_test.clj
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Change Log

## 0.22.0 - 2024-11-05
### Supported API versions
- OpenAI v2.3.0
- Azure OpenAI v2024-06-01
### Changes
- Added support for OpenAI Vector Stores [PR 75](https://github.com/wkok/openai-clojure/pull/75)

## 0.21.2 - 2024-11-03
### Supported API versions
- OpenAI v2.3.0
9 changes: 5 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -16,7 +16,7 @@ tools and applications which can work with both variants.
* [Usage - OpenAI](/doc/01-usage-openai.md)
* [Usage - Azure OpenAI](/doc/02-usage-azure.md)
* [Streaming Tokens](/doc/03-streaming.md)
* [API Reference](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.21.2/api/wkok.openai-clojure.api)
* [API Reference](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.22.0/api/wkok.openai-clojure.api)

## Supported APIs

@@ -36,6 +36,7 @@ tools and applications which can work with both variants.
| [Threads](https://platform.openai.com/docs/api-reference/threads) | (beta) | |
| [Messages](https://platform.openai.com/docs/api-reference/messages) | (beta) | |
| [Runs](https://platform.openai.com/docs/api-reference/runs) | (beta) | |
| [Vector Stores](https://platform.openai.com/docs/api-reference/vector-stores) | (beta) | |

## Configuration

@@ -46,13 +47,13 @@ Add the `openai-clojure` dependency
### deps.edn

```
net.clojars.wkok/openai-clojure {:mvn/version "0.21.2"}
net.clojars.wkok/openai-clojure {:mvn/version "0.22.0"}
```

### Leiningen project.clj

```
[net.clojars.wkok/openai-clojure "0.21.2"]
[net.clojars.wkok/openai-clojure "0.22.0"]
```

## Java
@@ -81,7 +82,7 @@ See: [Authentication - Azure OpenAI](/doc/02-usage-azure.md#authentication)

## Quickstart

See the full [API Reference](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.21.2/api/wkok.openai-clojure.api) for examples of all the supported OpenAI APIs.
See the full [API Reference](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.22.0/api/wkok.openai-clojure.api) for examples of all the supported OpenAI APIs.

Require the `api` namespace

2 changes: 1 addition & 1 deletion build.clj
Original file line number Diff line number Diff line change
@@ -3,7 +3,7 @@
(:require [org.corfield.build :as bb]))

(def lib 'net.clojars.wkok/openai-clojure)
(def version "0.21.2")
(def version "0.22.0")

(defn test "Run the tests." [opts]
(bb/run-tests opts))
60 changes: 34 additions & 26 deletions doc/01-usage-openai.md
Original file line number Diff line number Diff line change
@@ -9,13 +9,13 @@ Add the `openai-clojure` dependency
### deps.edn

```
net.clojars.wkok/openai-clojure {:mvn/version "0.21.2"}
net.clojars.wkok/openai-clojure {:mvn/version "0.22.0"}
```

### Leiningen project.clj

```
[net.clojars.wkok/openai-clojure "0.21.2"]
[net.clojars.wkok/openai-clojure "0.22.0"]
```

## Authentication
@@ -48,7 +48,7 @@ Alternatively the `api-key` and/or `organization` and/or `api-endpoint` can be p

## Quickstart

See the full [API Reference](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.21.2/api/wkok.openai-clojure.api) api documentation for examples of all the supported OpenAI APIs.
See the full [API Reference](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.22.0/api/wkok.openai-clojure.api) api documentation for examples of all the supported OpenAI APIs.

Require the `api` namespace

@@ -104,70 +104,70 @@ Any of these [supported request options](https://github.com/gnarroway/hato#reque

### Models

* [list-models](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.21.2/api/wkok.openai-clojure.api#list-models)
* [retrieve-model](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.21.2/api/wkok.openai-clojure.api#retrieve-model)
* [list-models](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.22.0/api/wkok.openai-clojure.api#list-models)
* [retrieve-model](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.22.0/api/wkok.openai-clojure.api#retrieve-model)

Also see the [OpenAI documentation](https://platform.openai.com/docs/api-reference/models)

### Completions

* [create-completion](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.21.2/api/wkok.openai-clojure.api#create-completion)
* [create-completion](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.22.0/api/wkok.openai-clojure.api#create-completion)

Also see the [OpenAI documentation](https://platform.openai.com/docs/api-reference/completions)

### Chat

* [create-chat-completion](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.21.2/api/wkok.openai-clojure.api#create-chat-completion)
* [create-chat-completion](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.22.0/api/wkok.openai-clojure.api#create-chat-completion)

Also see the [OpenAI documentation](https://platform.openai.com/docs/api-reference/chat)

### Images

* [create-image](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.21.2/api/wkok.openai-clojure.api#create-image)
* [create-image-edit](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.21.2/api/wkok.openai-clojure.api#create-image-edit)
* [create-image-variation](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.21.2/api/wkok.openai-clojure.api#create-image-variation)
* [create-image](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.22.0/api/wkok.openai-clojure.api#create-image)
* [create-image-edit](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.22.0/api/wkok.openai-clojure.api#create-image-edit)
* [create-image-variation](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.22.0/api/wkok.openai-clojure.api#create-image-variation)

Also see the [OpenAI documentation](https://platform.openai.com/docs/api-reference/images)

### Embeddings

* [create-embedding](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.21.2/api/wkok.openai-clojure.api#create-embedding)
* [create-embedding](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.22.0/api/wkok.openai-clojure.api#create-embedding)

Also see the [OpenAI documentation](https://platform.openai.com/docs/api-reference/embeddings)

### Audio

* [create-transcription](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.21.2/api/wkok.openai-clojure.api#create-transcription)
* [create-translation](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.21.2/api/wkok.openai-clojure.api#create-translation)
* [create-transcription](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.22.0/api/wkok.openai-clojure.api#create-transcription)
* [create-translation](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.22.0/api/wkok.openai-clojure.api#create-translation)

* [create-speech](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.21.2/api/wkok.openai-clojure.api#create-speech)
* [create-speech](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.22.0/api/wkok.openai-clojure.api#create-speech)

Also see the [OpenAI documentation](https://platform.openai.com/docs/api-reference/audio)

### Files

* [list-files](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.21.2/api/wkok.openai-clojure.api#list-files)
* [create-file](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.21.2/api/wkok.openai-clojure.api#create-file)
* [delete-file](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.21.2/api/wkok.openai-clojure.api#delete-file)
* [retrieve-file](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.21.2/api/wkok.openai-clojure.api#retrieve-file)
* [download-file](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.21.2/api/wkok.openai-clojure.api#download-file)
* [list-files](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.22.0/api/wkok.openai-clojure.api#list-files)
* [create-file](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.22.0/api/wkok.openai-clojure.api#create-file)
* [delete-file](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.22.0/api/wkok.openai-clojure.api#delete-file)
* [retrieve-file](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.22.0/api/wkok.openai-clojure.api#retrieve-file)
* [download-file](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.22.0/api/wkok.openai-clojure.api#download-file)

Also see the [OpenAI documentation](https://platform.openai.com/docs/api-reference/files)

### Fine-tuning

* [create-fine-tuning-job](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.21.2/api/wkok.openai-clojure.api#create-fine-tuning-job)
* [list-fine-tuning-jobs](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.21.2/api/wkok.openai-clojure.api#list-fine-tuning-jobs)
* [retrieve-fine-tuning-job](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.21.2/api/wkok.openai-clojure.api#retrieve-fine-tuning-job)
* [cancel-fine-tuning-job](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.21.2/api/wkok.openai-clojure.api#cancel-fine-tuning-job)
* [list-fine-tuning-events](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.21.2/api/wkok.openai-clojure.api#list-fine-tuning-events)
* [delete-model](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.21.2/api/wkok.openai-clojure.api#delete-model)
* [create-fine-tuning-job](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.22.0/api/wkok.openai-clojure.api#create-fine-tuning-job)
* [list-fine-tuning-jobs](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.22.0/api/wkok.openai-clojure.api#list-fine-tuning-jobs)
* [retrieve-fine-tuning-job](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.22.0/api/wkok.openai-clojure.api#retrieve-fine-tuning-job)
* [cancel-fine-tuning-job](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.22.0/api/wkok.openai-clojure.api#cancel-fine-tuning-job)
* [list-fine-tuning-events](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.22.0/api/wkok.openai-clojure.api#list-fine-tuning-events)
* [delete-model](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.22.0/api/wkok.openai-clojure.api#delete-model)

Also see the [OpenAI documentation](https://platform.openai.com/docs/api-reference/fine-tuning)

### Moderations

* [create-moderation](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.21.2/api/wkok.openai-clojure.api#create-moderation)
* [create-moderation](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.22.0/api/wkok.openai-clojure.api#create-moderation)

### Assistants

@@ -203,5 +203,13 @@ Also see the [OpenAI documentation](https://platform.openai.com/docs/api-referen
* [create-thread-and-run](https://platform.openai.com/docs/api-reference/runs/createThreadAndRun)
* [list-run-steps](https://platform.openai.com/docs/api-reference/runs/listRunSteps)

### Vector Stores

* [create-vector-store](https://platform.openai.com/docs/api-reference/vector-stores/create)
* [list-vector-stores](https://platform.openai.com/docs/api-reference/vector-stores/list)
* [retrieve-vector-store](https://platform.openai.com/docs/api-reference/vector-stores/retrieve)
* [modify-vector-store](https://platform.openai.com/docs/api-reference/vector-stores/modify)
* [delete-vector-store](https://platform.openai.com/docs/api-reference/vector-stores/delete)


Also see the [OpenAI documentation](https://platform.openai.com/docs/api-reference/moderations)
18 changes: 9 additions & 9 deletions doc/02-usage-azure.md
Original file line number Diff line number Diff line change
@@ -9,13 +9,13 @@ Add the `openai-clojure` dependency
### deps.edn

```
net.clojars.wkok/openai-clojure {:mvn/version "0.21.2"}
net.clojars.wkok/openai-clojure {:mvn/version "0.22.0"}
```

### Leiningen project.clj

```
[net.clojars.wkok/openai-clojure "0.21.2"]
[net.clojars.wkok/openai-clojure "0.22.0"]
```

## Authentication
@@ -44,7 +44,7 @@ Alternatively the `api-key` and/or `api-endpoint` can be passed in the `options`

## Quickstart

See the full [API Reference](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.21.2/api/wkok.openai-clojure.api) api documentation for examples of all the supported OpenAI APIs.
See the full [API Reference](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.22.0/api/wkok.openai-clojure.api) api documentation for examples of all the supported OpenAI APIs.

Require the `api` namespace

@@ -102,36 +102,36 @@ Any of these [supported request options](https://github.com/gnarroway/hato#reque

### Completions

* [create-completion](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.21.2/api/wkok.openai-clojure.api#create-completion)
* [create-completion](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.22.0/api/wkok.openai-clojure.api#create-completion)

Also see the [Azure OpenAI documentation](https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#completions)

### Chat

* [create-chat-completion](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.21.2/api/wkok.openai-clojure.api#create-chat-completion)
* [create-chat-completion](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.22.0/api/wkok.openai-clojure.api#create-chat-completion)

Also see the [Azure OpenAI documentation](https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#chat-completions)

### Embeddings

* [create-embedding](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.21.2/api/wkok.openai-clojure.api#create-embedding)
* [create-embedding](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.22.0/api/wkok.openai-clojure.api#create-embedding)

Also see the [Azure OpenAI documentation](https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#embeddings)

### Transcriptions

* [create-transcription](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.21.2/api/wkok.openai-clojure.api#create-transcription)
* [create-transcription](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.22.0/api/wkok.openai-clojure.api#create-transcription)

Also see the [Azure OpenAI documentation](https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#transcriptions)

### Translations

* [create-translation](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.21.2/api/wkok.openai-clojure.api#create-translation)
* [create-translation](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.22.0/api/wkok.openai-clojure.api#create-translation)

Also see the [Azure OpenAI documentation](https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#translations)

### Images

* [create-image](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.21.2/api/wkok.openai-clojure.api#create-image)
* [create-image](https://cljdoc.org/d/net.clojars.wkok/openai-clojure/0.22.0/api/wkok.openai-clojure.api#create-image)

Also see the [Azure OpenAI documentation](https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#image-generation)
81 changes: 81 additions & 0 deletions src/wkok/openai_clojure/api.clj
Original file line number Diff line number Diff line change
@@ -865,3 +865,84 @@
([params options]
(let [opts (assoc-in options [:openai-beta] ASSISTANTS_HTTP_HEADER_STR)]
(core/response-for :create-thread-and-run params opts))))


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Vector stores (beta)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defn create-vector-store
"Create a vector store.
Example:
```
(create-vector-store {:name \"Support FAQ\" :file-ids [\"file-id-123\"]})
```
Also see the [OpenAI documentation](https://platform.openai.com/docs/api-reference/vector-stores/create)
"
([params]
(create-vector-store params nil))
([params options]
(let [opts (assoc-in options [:openai-beta] ASSISTANTS_HTTP_HEADER_STR)]
(core/response-for :create-vector-store params opts))))

(defn list-vector-stores
"Returns a list of vector stores.
Example:
```
(list-vector-stores {:limit 1})
```
Also see the [OpenAI documentation](https://platform.openai.com/docs/api-reference/vector-stores/list)
"
([params]
(list-vector-stores params nil))
([params options]
(let [opts (assoc-in options [:openai-beta] ASSISTANTS_HTTP_HEADER_STR)]
(core/response-for :list-vector-stores params opts))))

(defn retrieve-vector-store
"Retrieves a vector store.
Example:
```
(retrieve-vector-store {:vector_store_id \"vs_abc123\"})
```
Also see the [OpenAI documentation](https://platform.openai.com/docs/api-reference/vector-stores/retrieve)
"
([params]
(retrieve-vector-store params nil))
([params options]
(let [opts (assoc-in options [:openai-beta] ASSISTANTS_HTTP_HEADER_STR)]
(core/response-for :get-vector-store params opts))))

(defn modify-vector-store
"Modifies a vector store.
Example:
```
(modify-vector-store {:vector_store_id \"vs_abc123\" :name \"Support FAQ\"})
```
Also see the [OpenAI documentation](https://platform.openai.com/docs/api-reference/vector-stores/modify)
"
([params]
(modify-vector-store params nil))
([params options]
(let [opts (assoc-in options [:openai-beta] ASSISTANTS_HTTP_HEADER_STR)]
(core/response-for :modify-vector-store params opts))))

(defn delete-vector-store
"Deletes a vector store.
Example:
```
(delete-vector-store {:vector_store_id \"vs_abc123\"})
```
Also see the [OpenAI documentation](https://platform.openai.com/docs/api-reference/vector-stores/delete)
"
([params]
(delete-vector-store params nil))
([params options]
(let [opts (assoc-in options [:openai-beta] ASSISTANTS_HTTP_HEADER_STR)]
(core/response-for :delete-vector-store params opts))))
17 changes: 16 additions & 1 deletion test/wkok/openai_clojure/api_test.clj
Original file line number Diff line number Diff line change
@@ -291,7 +291,22 @@
:step_id "----id----"})))

(is (= :success
(api/create-thread-and-run {:assistant_id "----id----"}))))))
(api/create-thread-and-run {:assistant_id "----id----"})))

(is (= :success
(api/create-vector-store {:name "Support FAQ" :file-ids ["----id----"]})))

(is (= :success
(api/list-vector-stores {:limit 1})))

(is (= :success
(api/retrieve-vector-store {:vector_store_id "----id----"})))

(is (= :success
(api/modify-vector-store {:vector_store_id "----id----" :name "Support FAQ v2"})))

(is (= :success
(api/delete-vector-store {:vector_store_id "----id----"}))))))

(deftest create-chat-completion-tools