From ab1a9d7aa0c61df01f5988667a7dd720ba229ed3 Mon Sep 17 00:00:00 2001 From: platform-endpoints Date: Wed, 7 Aug 2024 14:00:55 +0000 Subject: [PATCH] Add spec changes Co-authored-by: billytrend-cohere <144115527+billytrend-cohere@users.noreply.github.com> --- cohere-openapi.yaml | 595 +++++++++++++++++- snippets/snippets/.gitattributes | 9 + snippets/snippets/.gitignore | 5 + snippets/snippets/curl/chat-post.sh | 13 + snippets/snippets/curl/classify-post.sh | 20 + snippets/snippets/curl/connector-create.sh | 9 + snippets/snippets/curl/connector-delete.sh | 4 + snippets/snippets/curl/connector-get.sh | 4 + snippets/snippets/curl/connector-patch.sh | 9 + .../connectors-id-oauth-authorize-post.sh | 4 + snippets/snippets/curl/connectors-list.sh | 4 + snippets/snippets/curl/dataset-delete.sh | 5 + snippets/snippets/curl/dataset-get.sh | 4 + snippets/snippets/curl/dataset-post.sh | 5 + snippets/snippets/curl/dataset-usage-get.sh | 4 + snippets/snippets/curl/detokenize-post.sh | 9 + snippets/snippets/curl/embed-jobs-cancel.sh | 5 + snippets/snippets/curl/embed-jobs-get.sh | 4 + snippets/snippets/curl/embed-jobs-post.sh | 9 + snippets/snippets/curl/embed-post.sh | 10 + snippets/snippets/curl/emebed-jobs-get.sh | 4 + .../curl/finetuning/create-finetuned-model.sh | 14 + .../curl/finetuning/delete-finetuned-model.sh | 4 + .../curl/finetuning/get-finetuned-model.sh | 4 + .../snippets/curl/finetuning/list-events.sh | 4 + .../curl/finetuning/list-finetuned-models.sh | 4 + .../finetuning/list-training-step-metrics.sh | 4 + .../curl/finetuning/update-finetuned-model.sh | 6 + snippets/snippets/curl/generate-post.sh | 8 + snippets/snippets/curl/models-list-get.sh | 4 + snippets/snippets/curl/rerank-post.sh | 15 + snippets/snippets/curl/summarize-post.sh | 8 + snippets/snippets/curl/tokenize-post.sh | 9 + .../snippets/go/chat-post/default/main.go | 42 ++ .../snippets/go/chat-post/documents/main.go | 61 ++ snippets/snippets/go/chat-post/stream/main.go | 61 ++ snippets/snippets/go/chat-post/tools/main.go | 50 ++ snippets/snippets/go/classify-post/main.go | 44 ++ snippets/snippets/go/connector-create/main.go | 31 + snippets/snippets/go/connector-delete/main.go | 20 + snippets/snippets/go/connector-get/main.go | 20 + snippets/snippets/go/connector-patch/main.go | 27 + .../main.go | 27 + snippets/snippets/go/connectors-list/main.go | 23 + snippets/snippets/go/dataset-delete/main.go | 19 + snippets/snippets/go/dataset-get/main.go | 20 + snippets/snippets/go/dataset-post/main.go | 40 ++ .../snippets/go/dataset-usage-get/main.go | 20 + snippets/snippets/go/detokenize-post/main.go | 26 + .../snippets/go/embed-jobs-cancel/main.go | 19 + snippets/snippets/go/embed-jobs-get/main.go | 20 + snippets/snippets/go/embed-jobs-post/main.go | 27 + snippets/snippets/go/embed-post/main.go | 28 + snippets/snippets/go/emebed-jobs-get/main.go | 20 + .../finetuning/create-finetuned-model/main.go | 31 + .../finetuning/delete-finetuned-model/main.go | 17 + .../go/finetuning/get-finetuned-model/main.go | 19 + .../go/finetuning/list-events/main.go | 23 + .../finetuning/list-finetuned-models/main.go | 19 + .../list-training-step-metrics/main.go | 23 + .../finetuning/update-finetuned-model/main.go | 26 + snippets/snippets/go/generate-post/main.go | 44 ++ snippets/snippets/go/models-list-get/main.go | 21 + snippets/snippets/go/rerank-post/main.go | 33 + snippets/snippets/go/summarize-post/main.go | 26 + snippets/snippets/go/tokenize-post/main.go | 27 + snippets/snippets/java/.gitattributes | 9 + snippets/snippets/java/.gitignore | 5 + snippets/snippets/java/app/build.gradle | 74 +++ .../java/app/src/main/java/ClassifyPost.java | 30 + .../app/src/main/java/ConnectorCreate.java | 16 + .../app/src/main/java/ConnectorDelete.java | 11 + .../java/app/src/main/java/ConnectorGet.java | 13 + .../app/src/main/java/ConnectorPatch.java | 13 + .../java/ConnectorsIdOauthAuthorizePost.java | 14 + .../app/src/main/java/ConnectorsList.java | 13 + .../java/app/src/main/java/DatasetDelete.java | 11 + .../java/app/src/main/java/DatasetGet.java | 13 + .../java/app/src/main/java/DatasetPost.java | 17 + .../app/src/main/java/DatasetUsageGet.java | 13 + .../app/src/main/java/DetokenizePost.java | 18 + .../app/src/main/java/EmbedJobsCancel.java | 10 + .../java/app/src/main/java/EmbedJobsGet.java | 13 + .../java/app/src/main/java/EmbedJobsPost.java | 15 + .../java/app/src/main/java/EmbedPost.java | 17 + .../java/app/src/main/java/EmebedJobsGet.java | 13 + .../java/app/src/main/java/GeneratePost.java | 14 + .../java/app/src/main/java/ModelsListGet.java | 13 + .../java/app/src/main/java/RerankPost.java | 23 + .../java/app/src/main/java/SummarizePost.java | 37 ++ .../java/app/src/main/java/TokenizePost.java | 14 + .../app/src/main/java/chatpost/Default.java | 36 ++ .../app/src/main/java/chatpost/Documents.java | 153 +++++ .../app/src/main/java/chatpost/Stream.java | 47 ++ .../app/src/main/java/chatpost/Tools.java | 80 +++ .../java/finetuning/CreateFinetunedModel.java | 16 + .../java/finetuning/DeleteFinetunedModel.java | 12 + .../java/finetuning/GetFinetunedModel.java | 15 + .../src/main/java/finetuning/ListEvents.java | 14 + .../java/finetuning/ListFinetunedModels.java | 15 + .../finetuning/ListTrainingStepMetrics.java | 15 + .../java/finetuning/UpdateFinetunedModel.java | 19 + .../java/app/src/test/java/AppTest.java | 12 + .../snippets/java/gradle/libs.versions.toml | 10 + .../java/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 43462 bytes .../gradle/wrapper/gradle-wrapper.properties | 7 + snippets/snippets/java/gradlew | 249 ++++++++ snippets/snippets/java/gradlew.bat | 92 +++ snippets/snippets/java/settings.gradle | 14 + snippets/snippets/node/chat-post/default.ts | 22 + snippets/snippets/node/chat-post/documents.ts | 35 ++ snippets/snippets/node/chat-post/stream.ts | 26 + snippets/snippets/node/chat-post/tools.ts | 40 ++ snippets/snippets/node/classify-post.ts | 25 + snippets/snippets/node/connector-create.ts | 15 + snippets/snippets/node/connector-delete.ts | 9 + snippets/snippets/node/connector-get.ts | 11 + snippets/snippets/node/connector-patch.ts | 14 + .../connectors-id-oauth-authorize-post.ts | 13 + snippets/snippets/node/connectors-list.ts | 11 + snippets/snippets/node/dataset-get.ts | 11 + snippets/snippets/node/dataset-post.ts | 14 + snippets/snippets/node/dataset-usage-get.ts | 11 + snippets/snippets/node/detokenize-post.ts | 14 + snippets/snippets/node/embed-jobs-cancel.ts | 11 + snippets/snippets/node/embed-jobs-get.ts | 11 + snippets/snippets/node/embed-jobs-post.ts | 15 + snippets/snippets/node/embed-post.ts | 14 + snippets/snippets/node/emebed-jobs-get.ts | 11 + .../node/finetuning/create-finetuned-model.ts | 19 + .../node/finetuning/delete-finetuned-model.ts | 9 + .../node/finetuning/get-finetuned-model.ts | 11 + .../snippets/node/finetuning/list-events.ts | 11 + .../node/finetuning/list-finetuned-models.ts | 11 + .../finetuning/list-training-step-metrics.ts | 13 + .../node/finetuning/update-finetuned-model.ts | 13 + snippets/snippets/node/generate-post.ts | 13 + snippets/snippets/node/models-list-get.ts | 11 + snippets/snippets/node/rerank-post.ts | 30 + snippets/snippets/node/summarize-post.ts | 33 + snippets/snippets/node/tokenize-post.ts | 8 + snippets/snippets/python-async/chat-post.py | 21 + .../snippets/python-async/classify-post.py | 36 ++ .../snippets/python-async/connector-create.py | 14 + .../snippets/python-async/connector-delete.py | 10 + .../snippets/python-async/connector-get.py | 11 + .../snippets/python-async/connector-patch.py | 13 + .../connectors-id-oauth-authorize-post.py | 13 + .../snippets/python-async/connectors-list.py | 11 + .../snippets/python-async/dataset-delete.py | 10 + snippets/snippets/python-async/dataset-get.py | 12 + .../snippets/python-async/dataset-post.py | 21 + .../python-async/dataset-usage-get.py | 12 + .../snippets/python-async/detokenize-post.py | 13 + .../python-async/embed-jobs-cancel.py | 8 + .../snippets/python-async/embed-jobs-get.py | 12 + .../snippets/python-async/embed-jobs-post.py | 18 + snippets/snippets/python-async/embed-post.py | 13 + .../snippets/python-async/emebed-jobs-get.py | 12 + .../finetuning/create-finetuned-model.py | 27 + .../finetuning/delete-finetuned-model.py | 10 + .../finetuning/get-finetuned-model.py | 11 + .../python-async/finetuning/list-events.py | 11 + .../finetuning/list-finetuned-models.py | 11 + .../finetuning/list-training-step-metrics.py | 11 + .../finetuning/update-finetuned-model.py | 11 + .../snippets/python-async/generate-post.py | 13 + .../snippets/python-async/models-list-get.py | 11 + snippets/snippets/python-async/rerank-post.py | 24 + .../snippets/python-async/summarize-post.py | 36 ++ .../snippets/python-async/tokenize-post.py | 11 + snippets/snippets/python/chat-post.py | 16 + snippets/snippets/python/chat-post/default.py | 18 + .../snippets/python/chat-post/documents.py | 27 + snippets/snippets/python/chat-post/stream.py | 20 + snippets/snippets/python/chat-post/tools.py | 40 ++ snippets/snippets/python/classify-post.py | 30 + snippets/snippets/python/connector-create.py | 8 + snippets/snippets/python/connector-delete.py | 4 + snippets/snippets/python/connector-get.py | 5 + snippets/snippets/python/connector-patch.py | 7 + .../connectors-id-oauth-authorize-post.py | 7 + snippets/snippets/python/connectors-list.py | 5 + snippets/snippets/python/dataset-delete.py | 6 + snippets/snippets/python/dataset-get.py | 8 + snippets/snippets/python/dataset-post.py | 15 + snippets/snippets/python/dataset-usage-get.py | 8 + snippets/snippets/python/detokenize-post.py | 8 + snippets/snippets/python/embed-jobs-cancel.py | 6 + snippets/snippets/python/embed-jobs-get.py | 8 + snippets/snippets/python/embed-jobs-post.py | 13 + snippets/snippets/python/embed-post.py | 8 + snippets/snippets/python/emebed-jobs-get.py | 8 + .../finetuning/create-finetuned-model.py | 29 + .../finetuning/delete-finetuned-model.py | 4 + .../python/finetuning/get-finetuned-model.py | 5 + .../snippets/python/finetuning/list-events.py | 5 + .../finetuning/list-finetuned-models.py | 5 + .../finetuning/list-training-step-metrics.py | 6 + .../finetuning/update-finetuned-model.py | 14 + snippets/snippets/python/generate-post.py | 8 + snippets/snippets/python/models-list-get.py | 5 + snippets/snippets/python/rerank-post.py | 19 + snippets/snippets/python/summarize-post.py | 31 + snippets/snippets/python/tokenize-post.py | 6 + snippets/snippets/settings.gradle | 14 + 206 files changed, 4381 insertions(+), 25 deletions(-) create mode 100644 snippets/snippets/.gitattributes create mode 100644 snippets/snippets/.gitignore create mode 100644 snippets/snippets/curl/chat-post.sh create mode 100644 snippets/snippets/curl/classify-post.sh create mode 100644 snippets/snippets/curl/connector-create.sh create mode 100644 snippets/snippets/curl/connector-delete.sh create mode 100644 snippets/snippets/curl/connector-get.sh create mode 100644 snippets/snippets/curl/connector-patch.sh create mode 100644 snippets/snippets/curl/connectors-id-oauth-authorize-post.sh create mode 100644 snippets/snippets/curl/connectors-list.sh create mode 100644 snippets/snippets/curl/dataset-delete.sh create mode 100644 snippets/snippets/curl/dataset-get.sh create mode 100644 snippets/snippets/curl/dataset-post.sh create mode 100644 snippets/snippets/curl/dataset-usage-get.sh create mode 100644 snippets/snippets/curl/detokenize-post.sh create mode 100644 snippets/snippets/curl/embed-jobs-cancel.sh create mode 100644 snippets/snippets/curl/embed-jobs-get.sh create mode 100644 snippets/snippets/curl/embed-jobs-post.sh create mode 100644 snippets/snippets/curl/embed-post.sh create mode 100644 snippets/snippets/curl/emebed-jobs-get.sh create mode 100644 snippets/snippets/curl/finetuning/create-finetuned-model.sh create mode 100644 snippets/snippets/curl/finetuning/delete-finetuned-model.sh create mode 100644 snippets/snippets/curl/finetuning/get-finetuned-model.sh create mode 100644 snippets/snippets/curl/finetuning/list-events.sh create mode 100644 snippets/snippets/curl/finetuning/list-finetuned-models.sh create mode 100644 snippets/snippets/curl/finetuning/list-training-step-metrics.sh create mode 100644 snippets/snippets/curl/finetuning/update-finetuned-model.sh create mode 100644 snippets/snippets/curl/generate-post.sh create mode 100644 snippets/snippets/curl/models-list-get.sh create mode 100644 snippets/snippets/curl/rerank-post.sh create mode 100644 snippets/snippets/curl/summarize-post.sh create mode 100644 snippets/snippets/curl/tokenize-post.sh create mode 100644 snippets/snippets/go/chat-post/default/main.go create mode 100644 snippets/snippets/go/chat-post/documents/main.go create mode 100644 snippets/snippets/go/chat-post/stream/main.go create mode 100644 snippets/snippets/go/chat-post/tools/main.go create mode 100644 snippets/snippets/go/classify-post/main.go create mode 100644 snippets/snippets/go/connector-create/main.go create mode 100644 snippets/snippets/go/connector-delete/main.go create mode 100644 snippets/snippets/go/connector-get/main.go create mode 100644 snippets/snippets/go/connector-patch/main.go create mode 100644 snippets/snippets/go/connectors-id-oauth-authorize-post/main.go create mode 100644 snippets/snippets/go/connectors-list/main.go create mode 100644 snippets/snippets/go/dataset-delete/main.go create mode 100644 snippets/snippets/go/dataset-get/main.go create mode 100644 snippets/snippets/go/dataset-post/main.go create mode 100644 snippets/snippets/go/dataset-usage-get/main.go create mode 100644 snippets/snippets/go/detokenize-post/main.go create mode 100644 snippets/snippets/go/embed-jobs-cancel/main.go create mode 100644 snippets/snippets/go/embed-jobs-get/main.go create mode 100644 snippets/snippets/go/embed-jobs-post/main.go create mode 100644 snippets/snippets/go/embed-post/main.go create mode 100644 snippets/snippets/go/emebed-jobs-get/main.go create mode 100644 snippets/snippets/go/finetuning/create-finetuned-model/main.go create mode 100644 snippets/snippets/go/finetuning/delete-finetuned-model/main.go create mode 100644 snippets/snippets/go/finetuning/get-finetuned-model/main.go create mode 100644 snippets/snippets/go/finetuning/list-events/main.go create mode 100644 snippets/snippets/go/finetuning/list-finetuned-models/main.go create mode 100644 snippets/snippets/go/finetuning/list-training-step-metrics/main.go create mode 100644 snippets/snippets/go/finetuning/update-finetuned-model/main.go create mode 100644 snippets/snippets/go/generate-post/main.go create mode 100644 snippets/snippets/go/models-list-get/main.go create mode 100644 snippets/snippets/go/rerank-post/main.go create mode 100644 snippets/snippets/go/summarize-post/main.go create mode 100644 snippets/snippets/go/tokenize-post/main.go create mode 100644 snippets/snippets/java/.gitattributes create mode 100644 snippets/snippets/java/.gitignore create mode 100644 snippets/snippets/java/app/build.gradle create mode 100644 snippets/snippets/java/app/src/main/java/ClassifyPost.java create mode 100644 snippets/snippets/java/app/src/main/java/ConnectorCreate.java create mode 100644 snippets/snippets/java/app/src/main/java/ConnectorDelete.java create mode 100644 snippets/snippets/java/app/src/main/java/ConnectorGet.java create mode 100644 snippets/snippets/java/app/src/main/java/ConnectorPatch.java create mode 100644 snippets/snippets/java/app/src/main/java/ConnectorsIdOauthAuthorizePost.java create mode 100644 snippets/snippets/java/app/src/main/java/ConnectorsList.java create mode 100644 snippets/snippets/java/app/src/main/java/DatasetDelete.java create mode 100644 snippets/snippets/java/app/src/main/java/DatasetGet.java create mode 100644 snippets/snippets/java/app/src/main/java/DatasetPost.java create mode 100644 snippets/snippets/java/app/src/main/java/DatasetUsageGet.java create mode 100644 snippets/snippets/java/app/src/main/java/DetokenizePost.java create mode 100644 snippets/snippets/java/app/src/main/java/EmbedJobsCancel.java create mode 100644 snippets/snippets/java/app/src/main/java/EmbedJobsGet.java create mode 100644 snippets/snippets/java/app/src/main/java/EmbedJobsPost.java create mode 100644 snippets/snippets/java/app/src/main/java/EmbedPost.java create mode 100644 snippets/snippets/java/app/src/main/java/EmebedJobsGet.java create mode 100644 snippets/snippets/java/app/src/main/java/GeneratePost.java create mode 100644 snippets/snippets/java/app/src/main/java/ModelsListGet.java create mode 100644 snippets/snippets/java/app/src/main/java/RerankPost.java create mode 100644 snippets/snippets/java/app/src/main/java/SummarizePost.java create mode 100644 snippets/snippets/java/app/src/main/java/TokenizePost.java create mode 100644 snippets/snippets/java/app/src/main/java/chatpost/Default.java create mode 100644 snippets/snippets/java/app/src/main/java/chatpost/Documents.java create mode 100644 snippets/snippets/java/app/src/main/java/chatpost/Stream.java create mode 100644 snippets/snippets/java/app/src/main/java/chatpost/Tools.java create mode 100644 snippets/snippets/java/app/src/main/java/finetuning/CreateFinetunedModel.java create mode 100644 snippets/snippets/java/app/src/main/java/finetuning/DeleteFinetunedModel.java create mode 100644 snippets/snippets/java/app/src/main/java/finetuning/GetFinetunedModel.java create mode 100644 snippets/snippets/java/app/src/main/java/finetuning/ListEvents.java create mode 100644 snippets/snippets/java/app/src/main/java/finetuning/ListFinetunedModels.java create mode 100644 snippets/snippets/java/app/src/main/java/finetuning/ListTrainingStepMetrics.java create mode 100644 snippets/snippets/java/app/src/main/java/finetuning/UpdateFinetunedModel.java create mode 100644 snippets/snippets/java/app/src/test/java/AppTest.java create mode 100644 snippets/snippets/java/gradle/libs.versions.toml create mode 100644 snippets/snippets/java/gradle/wrapper/gradle-wrapper.jar create mode 100644 snippets/snippets/java/gradle/wrapper/gradle-wrapper.properties create mode 100755 snippets/snippets/java/gradlew create mode 100644 snippets/snippets/java/gradlew.bat create mode 100644 snippets/snippets/java/settings.gradle create mode 100644 snippets/snippets/node/chat-post/default.ts create mode 100644 snippets/snippets/node/chat-post/documents.ts create mode 100644 snippets/snippets/node/chat-post/stream.ts create mode 100644 snippets/snippets/node/chat-post/tools.ts create mode 100644 snippets/snippets/node/classify-post.ts create mode 100644 snippets/snippets/node/connector-create.ts create mode 100644 snippets/snippets/node/connector-delete.ts create mode 100644 snippets/snippets/node/connector-get.ts create mode 100644 snippets/snippets/node/connector-patch.ts create mode 100644 snippets/snippets/node/connectors-id-oauth-authorize-post.ts create mode 100644 snippets/snippets/node/connectors-list.ts create mode 100644 snippets/snippets/node/dataset-get.ts create mode 100644 snippets/snippets/node/dataset-post.ts create mode 100644 snippets/snippets/node/dataset-usage-get.ts create mode 100644 snippets/snippets/node/detokenize-post.ts create mode 100644 snippets/snippets/node/embed-jobs-cancel.ts create mode 100644 snippets/snippets/node/embed-jobs-get.ts create mode 100644 snippets/snippets/node/embed-jobs-post.ts create mode 100644 snippets/snippets/node/embed-post.ts create mode 100644 snippets/snippets/node/emebed-jobs-get.ts create mode 100644 snippets/snippets/node/finetuning/create-finetuned-model.ts create mode 100644 snippets/snippets/node/finetuning/delete-finetuned-model.ts create mode 100644 snippets/snippets/node/finetuning/get-finetuned-model.ts create mode 100644 snippets/snippets/node/finetuning/list-events.ts create mode 100644 snippets/snippets/node/finetuning/list-finetuned-models.ts create mode 100644 snippets/snippets/node/finetuning/list-training-step-metrics.ts create mode 100644 snippets/snippets/node/finetuning/update-finetuned-model.ts create mode 100644 snippets/snippets/node/generate-post.ts create mode 100644 snippets/snippets/node/models-list-get.ts create mode 100644 snippets/snippets/node/rerank-post.ts create mode 100644 snippets/snippets/node/summarize-post.ts create mode 100644 snippets/snippets/node/tokenize-post.ts create mode 100644 snippets/snippets/python-async/chat-post.py create mode 100644 snippets/snippets/python-async/classify-post.py create mode 100644 snippets/snippets/python-async/connector-create.py create mode 100644 snippets/snippets/python-async/connector-delete.py create mode 100644 snippets/snippets/python-async/connector-get.py create mode 100644 snippets/snippets/python-async/connector-patch.py create mode 100644 snippets/snippets/python-async/connectors-id-oauth-authorize-post.py create mode 100644 snippets/snippets/python-async/connectors-list.py create mode 100644 snippets/snippets/python-async/dataset-delete.py create mode 100644 snippets/snippets/python-async/dataset-get.py create mode 100644 snippets/snippets/python-async/dataset-post.py create mode 100644 snippets/snippets/python-async/dataset-usage-get.py create mode 100644 snippets/snippets/python-async/detokenize-post.py create mode 100644 snippets/snippets/python-async/embed-jobs-cancel.py create mode 100644 snippets/snippets/python-async/embed-jobs-get.py create mode 100644 snippets/snippets/python-async/embed-jobs-post.py create mode 100644 snippets/snippets/python-async/embed-post.py create mode 100644 snippets/snippets/python-async/emebed-jobs-get.py create mode 100644 snippets/snippets/python-async/finetuning/create-finetuned-model.py create mode 100644 snippets/snippets/python-async/finetuning/delete-finetuned-model.py create mode 100644 snippets/snippets/python-async/finetuning/get-finetuned-model.py create mode 100644 snippets/snippets/python-async/finetuning/list-events.py create mode 100644 snippets/snippets/python-async/finetuning/list-finetuned-models.py create mode 100644 snippets/snippets/python-async/finetuning/list-training-step-metrics.py create mode 100644 snippets/snippets/python-async/finetuning/update-finetuned-model.py create mode 100644 snippets/snippets/python-async/generate-post.py create mode 100644 snippets/snippets/python-async/models-list-get.py create mode 100644 snippets/snippets/python-async/rerank-post.py create mode 100644 snippets/snippets/python-async/summarize-post.py create mode 100644 snippets/snippets/python-async/tokenize-post.py create mode 100644 snippets/snippets/python/chat-post.py create mode 100644 snippets/snippets/python/chat-post/default.py create mode 100644 snippets/snippets/python/chat-post/documents.py create mode 100644 snippets/snippets/python/chat-post/stream.py create mode 100644 snippets/snippets/python/chat-post/tools.py create mode 100644 snippets/snippets/python/classify-post.py create mode 100644 snippets/snippets/python/connector-create.py create mode 100644 snippets/snippets/python/connector-delete.py create mode 100644 snippets/snippets/python/connector-get.py create mode 100644 snippets/snippets/python/connector-patch.py create mode 100644 snippets/snippets/python/connectors-id-oauth-authorize-post.py create mode 100644 snippets/snippets/python/connectors-list.py create mode 100644 snippets/snippets/python/dataset-delete.py create mode 100644 snippets/snippets/python/dataset-get.py create mode 100644 snippets/snippets/python/dataset-post.py create mode 100644 snippets/snippets/python/dataset-usage-get.py create mode 100644 snippets/snippets/python/detokenize-post.py create mode 100644 snippets/snippets/python/embed-jobs-cancel.py create mode 100644 snippets/snippets/python/embed-jobs-get.py create mode 100644 snippets/snippets/python/embed-jobs-post.py create mode 100644 snippets/snippets/python/embed-post.py create mode 100644 snippets/snippets/python/emebed-jobs-get.py create mode 100644 snippets/snippets/python/finetuning/create-finetuned-model.py create mode 100644 snippets/snippets/python/finetuning/delete-finetuned-model.py create mode 100644 snippets/snippets/python/finetuning/get-finetuned-model.py create mode 100644 snippets/snippets/python/finetuning/list-events.py create mode 100644 snippets/snippets/python/finetuning/list-finetuned-models.py create mode 100644 snippets/snippets/python/finetuning/list-training-step-metrics.py create mode 100644 snippets/snippets/python/finetuning/update-finetuned-model.py create mode 100644 snippets/snippets/python/generate-post.py create mode 100644 snippets/snippets/python/models-list-get.py create mode 100644 snippets/snippets/python/rerank-post.py create mode 100644 snippets/snippets/python/summarize-post.py create mode 100644 snippets/snippets/python/tokenize-post.py create mode 100644 snippets/snippets/settings.gradle diff --git a/cohere-openapi.yaml b/cohere-openapi.yaml index ee3a84ee..c8f2d437 100644 --- a/cohere-openapi.yaml +++ b/cohere-openapi.yaml @@ -18,7 +18,7 @@ info: name: proprietary url: https://cohere.com/terms-of-use servers: - - url: https://api.cohere.com/v1 + - url: https://api.cohere.com description: production security: - bearerAuth: [] @@ -32,7 +32,7 @@ tags: - name: /finetuning description: Finetuning API (Beta) paths: - /chat: + /v1/chat: post: parameters: - $ref: "#/components/parameters/RequestSource" @@ -1445,7 +1445,7 @@ paths: $ref: "#/components/responses/ServiceUnavailable" "504": $ref: "#/components/responses/GatewayTimeout" - /generate: + /v1/generate: post: x-fern-audiences: - public @@ -1878,7 +1878,7 @@ paths: value: prompt: Please explain to me how LLMs work description: "" - /embed: + /v1/embed: post: x-fern-audiences: - public @@ -2156,7 +2156,7 @@ paths: - hello - goodbye description: "" - /embed-jobs: + /v1/embed-jobs: post: x-fern-audiences: - public @@ -2514,7 +2514,7 @@ paths: $ref: "#/components/responses/GatewayTimeout" description: The list embed job endpoint allows users to view all embed jobs history for that specific user. - "/embed-jobs/{id}": + "/v1/embed-jobs/{id}": get: x-fern-audiences: - public @@ -2677,7 +2677,7 @@ paths: $ref: "#/components/responses/GatewayTimeout" description: This API retrieves the details about an embed job started by the same user. - "/embed-jobs/{id}/cancel": + "/v1/embed-jobs/{id}/cancel": post: x-fern-audiences: - public @@ -2829,7 +2829,7 @@ paths: the embeddings processed up to the cancellation point. It's important to note that partial results will not be available to users after cancellation. - /rerank: + /v1/rerank: post: x-fern-audiences: - public @@ -3218,7 +3218,7 @@ paths: "Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages.", "Capital punishment (the death penalty) has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states."] }' - /classify: + /v1/classify: post: parameters: - $ref: "#/components/parameters/RequestSource" @@ -3812,7 +3812,7 @@ paths: - text: Pre-read for tomorrow label: Not spam description: "" - /datasets: + /v1/datasets: post: x-fern-audiences: - public @@ -4325,7 +4325,7 @@ paths: $ref: "#/components/responses/ServiceUnavailable" "504": $ref: "#/components/responses/GatewayTimeout" - /datasets/usage: + /v1/datasets/usage: get: x-fern-audiences: - public @@ -4483,7 +4483,7 @@ paths: $ref: "#/components/responses/ServiceUnavailable" "504": $ref: "#/components/responses/GatewayTimeout" - "/datasets/{id}": + "/v1/datasets/{id}": get: x-fern-audiences: - public @@ -4783,7 +4783,7 @@ paths: $ref: "#/components/responses/ServiceUnavailable" "504": $ref: "#/components/responses/GatewayTimeout" - /summarize: + /v1/summarize: post: x-fern-audiences: - public @@ -5195,7 +5195,7 @@ paths: tofu), are available for those who are lactose intolerant, allergic to dairy protein or vegan." description: "" - /tokenize: + /v1/tokenize: post: x-fern-audiences: - public @@ -5452,7 +5452,7 @@ paths: text: tokenize me! :D model: command description: "" - /detokenize: + /v1/detokenize: post: x-fern-audiences: - public @@ -5695,7 +5695,7 @@ paths: model: command description: "" parameters: [] - /connectors: + /v1/connectors: get: x-fern-audiences: - public @@ -6043,7 +6043,7 @@ paths: "name": "Example connector", "url": "https://connector-example.com/search" }' - "/connectors/{id}": + "/v1/connectors/{id}": get: x-fern-audiences: - public @@ -6520,7 +6520,7 @@ paths: --url https://api.cohere.com/v1/connectors/id \ --header 'accept: application/json' \ --header "Authorization: bearer $CO_API_KEY" - "/connectors/{id}/oauth/authorize": + "/v1/connectors/{id}/oauth/authorize": post: x-fern-audiences: - public @@ -6705,7 +6705,7 @@ paths: --url https://api.cohere.com/v1/connectors/id/oauth/authorize \ --header 'accept: application/json' \ --header "Authorization: bearer $CO_API_KEY" - "/models/{model}": + "/v1/models/{model}": get: summary: Get a Model tags: @@ -6764,7 +6764,7 @@ paths: $ref: "#/components/responses/ServiceUnavailable" "504": $ref: "#/components/responses/GatewayTimeout" - /models: + /v1/models: get: x-fern-audiences: - public @@ -6942,7 +6942,7 @@ paths: log.Printf("%+v", resp) } - /check-api-key: + /v1/check-api-key: post: parameters: - $ref: "#/components/parameters/RequestSource" @@ -6992,7 +6992,7 @@ paths: $ref: "#/components/responses/ServiceUnavailable" "504": $ref: "#/components/responses/GatewayTimeout" - /finetuning/finetuned-models: + /v1/finetuning/finetuned-models: get: summary: Lists fine-tuned models. operationId: ListFinetunedModels @@ -7456,7 +7456,7 @@ paths: x-fern-sdk-group-name: finetuning x-fern-audiences: - public - "/finetuning/finetuned-models/{id}": + "/v1/finetuning/finetuned-models/{id}": patch: summary: Updates a fine-tuned model. operationId: UpdateFinetunedModel @@ -8041,7 +8041,7 @@ paths: x-fern-sdk-group-name: finetuning x-fern-audiences: - public - "/finetuning/finetuned-models/{finetuned_model_id}/events": + "/v1/finetuning/finetuned-models/{finetuned_model_id}/events": get: summary: Retrieves the chronology of statuses the fine-tuned model has been through. @@ -8252,7 +8252,7 @@ paths: x-fern-audiences: - public x-fern-request-name: FinetuningListEventsRequest - "/finetuning/finetuned-models/{finetuned_model_id}/training-step-metrics": + "/v1/finetuning/finetuned-models/{finetuned_model_id}/training-step-metrics": get: summary: Retrieves metrics measured during the training of a fine-tuned model. operationId: ListTrainingStepMetrics @@ -9219,6 +9219,529 @@ components: tool-calls-generation: "#/components/schemas/ChatToolCallsGenerationEvent" stream-end: "#/components/schemas/ChatStreamEndEvent" tool-calls-chunk: "#/components/schemas/ChatToolCallsChunkEvent" + ToolCall-2: + x-fern-sdk-group-name: v2 + description: A array of tool calls to be made. + type: object + properties: + id: + type: string + type: + type: string + enum: + - function + function: + type: object + properties: + name: + type: string + arguments: + type: string + TextContent: + x-fern-sdk-group-name: v2 + type: object + description: Text content of the message. + required: + - type + - text + properties: + type: + type: string + enum: + - text + text: + type: string + ToolSource: + x-fern-sdk-group-name: v2 + type: object + properties: + id: + type: string + description: The unique identifier of the document + tool_output: + type: object + additionalProperties: true + DocumentSource: + x-fern-sdk-group-name: v2 + type: object + description: A document source object containing the unique identifier of the + document and the document itself. + properties: + id: + type: string + description: The unique identifier of the document + document: + type: object + additionalProperties: true + Source: + x-fern-sdk-group-name: v2 + description: A source object containing information about the source of the data + cited. + oneOf: + - $ref: "#/components/schemas/ToolSource" + - $ref: "#/components/schemas/DocumentSource" + discriminator: + propertyName: type + mapping: + tool: "#/components/schemas/ToolSource" + document: "#/components/schemas/DocumentSource" + Citation: + x-fern-sdk-group-name: v2 + type: object + description: Citation information containing sources and the text cited. + properties: + start: + type: string + end: + type: string + text: + type: string + sources: + type: array + items: + $ref: "#/components/schemas/Source" + AssistantMessage: + x-fern-sdk-group-name: v2 + type: object + description: A message from the assistant role can contain text and tool call + information. + required: + - role + properties: + role: + type: string + enum: + - assistant + tool_calls: + type: array + items: + $ref: "#/components/schemas/ToolCall-2" + tool_plan: + type: string + content: + type: array + items: + $ref: "#/components/schemas/TextContent" + citations: + type: array + items: + $ref: "#/components/schemas/Citation" + SystemMessage: + x-fern-sdk-group-name: v2 + type: object + description: A message from the system. + required: + - role + - content + properties: + role: + type: string + enum: + - system + content: + oneOf: + - type: string + - type: array + items: + oneOf: + - $ref: "#/components/schemas/TextContent" + discriminator: + propertyName: type + mapping: + text: "#/components/schemas/TextContent" + DocumentContent: + x-fern-sdk-group-name: v2 + type: object + description: Content block of the message that contains information about documents. + required: + - type + - id + - document + properties: + type: + type: string + enum: + - text_document + id: + type: string + document: + type: object + Content: + x-fern-sdk-group-name: v2 + description: A Content block which contains information about the content type + and the content itself. + oneOf: + - $ref: "#/components/schemas/TextContent" + - $ref: "#/components/schemas/DocumentContent" + discriminator: + propertyName: type + mapping: + text: "#/components/schemas/TextContent" + document: "#/components/schemas/DocumentContent" + UserMessage: + x-fern-sdk-group-name: v2 + type: object + description: A message from the user. + required: + - role + - content + properties: + role: + type: string + enum: + - user + content: + oneOf: + - type: string + - type: array + items: + $ref: "#/components/schemas/Content" + ToolContent: + x-fern-sdk-group-name: v2 + type: object + description: Tool content result object + required: + - type + - output + properties: + type: + type: string + enum: + - tool_result_object + output: + type: object + additionalProperties: true + ToolMessage-2: + x-fern-sdk-group-name: v2 + type: object + description: A message from the system. + required: + - role + - tool_call_id + - tool_content + properties: + role: + type: string + enum: + - tool + tool_call_id: + type: string + tool_content: + type: array + items: + oneOf: + - $ref: "#/components/schemas/ToolContent" + discriminator: + propertyName: type + mapping: + tool_result_object: "#/components/schemas/ToolContent" + ChatMessage-2: + x-fern-sdk-group-name: v2 + description: Represents a single message in the chat history from a given role. + oneOf: + - $ref: "#/components/schemas/SystemMessage" + - $ref: "#/components/schemas/UserMessage" + - $ref: "#/components/schemas/AssistantMessage" + - $ref: "#/components/schemas/ToolMessage-2" + discriminator: + propertyName: role + mapping: + assistant: "#/components/schemas/AssistantMessage" + system: "#/components/schemas/SystemMessage" + user: "#/components/schemas/UserMessage" + tool: "#/components/schemas/ToolMessage-2" + ChatMessages: + x-fern-sdk-group-name: v2 + type: array + description: A list of chat messages representing the list chat message turns. + items: + $ref: "#/components/schemas/ChatMessage-2" + Tool-2: + x-fern-sdk-group-name: v2 + type: object + properties: + type: + type: string + enum: + - function + function: + type: object + properties: + name: + type: string + description: + type: string + parameters: + type: object + description: The parameters of the function as a JSON schema. + ChatFinishReason: + x-fern-sdk-group-name: v2 + description: The reason a chat request has finished. + type: string + enum: + - complete + - stop_sequence + - max_tokens + - tool_call + - error + - content_blocked + - error_limit + Usage: + x-fern-sdk-group-name: v2 + type: object + properties: + billed_units: + type: object + properties: + input_tokens: + type: number + description: | + The number of billed input tokens. + output_tokens: + type: number + description: | + The number of billed output tokens. + search_units: + type: number + description: | + The number of billed search units. + classifications: + type: number + description: | + The number of billed classifications units. + tokens: + type: object + properties: + input_tokens: + type: number + description: | + The number of tokens used as input to the model. + output_tokens: + type: number + description: | + The number of tokens produced by the model. + NonStreamedChatResponse-2: + x-fern-sdk-group-name: v2 + required: + - id + - finish_reason + - messages + properties: + id: + type: string + description: Unique identifier for the generated reply. Useful for submitting + feedback. + finish_reason: + $ref: "#/components/schemas/ChatFinishReason" + message: + $ref: "#/components/schemas/AssistantMessage" + usage: + $ref: "#/components/schemas/Usage" + ChatStreamEventType: + x-fern-sdk-group-name: v2 + description: The streamed event types + required: + - type + properties: + type: + type: string + enum: + - message-start + - content-start + - content-delta + - content-end + - tool-call-start + - tool-call-delta + - tool-call-end + - tool-plan-delta + - message-end + ChatMessageStartEvent: + x-fern-sdk-group-name: v2 + description: A streamed event which signifies that a stream has started. + allOf: + - $ref: "#/components/schemas/ChatStreamEventType" + - type: object + properties: + id: + type: string + description: Unique identifier for the generated reply. + delta: + type: object + properties: + message: + type: object + properties: + role: + type: string + description: The role of the message. + enum: + - assistant + ChatContentStartEvent: + x-fern-sdk-group-name: v2 + description: A streamed delta event which signifies that a new content block has + started. + allOf: + - $ref: "#/components/schemas/ChatStreamEventType" + - type: object + properties: + index: + type: integer + delta: + type: object + properties: + message: + type: object + properties: + content: + type: object + properties: + text: + type: string + type: + type: string + enum: + - text + ChatContentDeltaEvent: + x-fern-sdk-group-name: v2 + description: A streamed delta event which contains a delta of chat text content. + allOf: + - $ref: "#/components/schemas/ChatStreamEventType" + - type: object + properties: + index: + type: integer + delta: + type: object + properties: + message: + type: object + properties: + content: + type: object + properties: + text: + type: string + ChatContentEndEvent: + x-fern-sdk-group-name: v2 + description: A streamed delta event which signifies that the content block has ended. + allOf: + - $ref: "#/components/schemas/ChatStreamEventType" + - type: object + properties: + index: + type: integer + ChatToolPlanDeltaEvent: + x-fern-sdk-group-name: v2 + description: A streamed event which contains a delta of tool plan text. + allOf: + - $ref: "#/components/schemas/ChatStreamEventType" + - type: object + properties: + delta: + type: object + properties: + tool_plan: + type: string + ChatToolCallStartEvent: + x-fern-sdk-group-name: v2 + description: A streamed event delta which signifies a tool call has started streaming. + allOf: + - $ref: "#/components/schemas/ChatStreamEventType" + - type: object + properties: + index: + type: integer + delta: + type: object + properties: + tool_call: + type: object + properties: + id: + type: string + type: + type: string + enum: + - function + function: + type: object + properties: + name: + type: string + arguments: + type: string + ChatToolCallDeltaEvent: + x-fern-sdk-group-name: v2 + description: A streamed event delta which signifies a delta in tool call arguments. + allOf: + - $ref: "#/components/schemas/ChatStreamEventType" + - type: object + properties: + index: + type: integer + delta: + type: object + properties: + tool_call: + type: object + properties: + function: + type: object + properties: + arguments: + type: string + ChatToolCallEndEvent: + x-fern-sdk-group-name: v2 + description: A streamed event delta which signifies a tool call has finished + streaming. + allOf: + - $ref: "#/components/schemas/ChatStreamEventType" + - type: object + properties: + index: + type: integer + ChatMessageEndEvent: + x-fern-sdk-group-name: v2 + description: A streamed event which signifies that the chat message has ended. + allOf: + - $ref: "#/components/schemas/ChatStreamEventType" + - type: object + properties: + id: + type: string + delta: + type: object + properties: + finish_reason: + $ref: "#/components/schemas/ChatFinishReason" + usage: + $ref: "#/components/schemas/Usage" + StreamedChatResponse-2: + x-fern-sdk-group-name: v2 + description: StreamedChatResponse is returned in streaming mode (specified with + `stream=True` in the request). + oneOf: + - $ref: "#/components/schemas/ChatMessageStartEvent" + - $ref: "#/components/schemas/ChatContentStartEvent" + - $ref: "#/components/schemas/ChatContentDeltaEvent" + - $ref: "#/components/schemas/ChatContentEndEvent" + - $ref: "#/components/schemas/ChatToolPlanDeltaEvent" + - $ref: "#/components/schemas/ChatToolCallStartEvent" + - $ref: "#/components/schemas/ChatToolCallDeltaEvent" + - $ref: "#/components/schemas/ChatToolCallEndEvent" + - $ref: "#/components/schemas/ChatMessageEndEvent" + discriminator: + propertyName: type + mapping: + message-start: "#/components/schemas/ChatMessageStartEvent" + content-start: "#/components/schemas/ChatContentStartEvent" + content-delta: "#/components/schemas/ChatContentDeltaEvent" + content-end: "#/components/schemas/ChatContentEndEvent" + tool-plan-delta: "#/components/schemas/ChatToolPlanDeltaEvent" + tool-call-start: "#/components/schemas/ChatToolCallStartEvent" + tool-call-delta: "#/components/schemas/ChatToolCallDeltaEvent" + tool-call-end: "#/components/schemas/ChatToolCallEndEvent" + message-end: "#/components/schemas/ChatMessageEndEvent" SingleGeneration: type: object properties: @@ -13189,6 +13712,25 @@ components: x-fern-sdk-group-name: - finetuning - finetuning + WandbConfig: + type: object + properties: + project: + type: string + description: The WandB project name to be used during training. + api_key: + type: string + description: The WandB API key to be used during training. + entity: + type: string + description: The WandB entity name to be used during training. + description: The Weights & Biases configuration. + required: + - project + - api_key + x-fern-sdk-group-name: + - finetuning + - finetuning Settings: type: object properties: @@ -13206,6 +13748,9 @@ components: description: read-only. Whether the model is single-label or multi-label (only for classification). readOnly: true + wandb: + $ref: "#/components/schemas/WandbConfig" + description: The Weights & Biases configuration. description: The configuration used for fine-tuning. required: - base_model diff --git a/snippets/snippets/.gitattributes b/snippets/snippets/.gitattributes new file mode 100644 index 00000000..097f9f98 --- /dev/null +++ b/snippets/snippets/.gitattributes @@ -0,0 +1,9 @@ +# +# https://help.github.com/articles/dealing-with-line-endings/ +# +# Linux start script should use lf +/gradlew text eol=lf + +# These are Windows script files and should use crlf +*.bat text eol=crlf + diff --git a/snippets/snippets/.gitignore b/snippets/snippets/.gitignore new file mode 100644 index 00000000..1b6985c0 --- /dev/null +++ b/snippets/snippets/.gitignore @@ -0,0 +1,5 @@ +# Ignore Gradle project-specific cache directory +.gradle + +# Ignore Gradle build output directory +build diff --git a/snippets/snippets/curl/chat-post.sh b/snippets/snippets/curl/chat-post.sh new file mode 100644 index 00000000..19403f17 --- /dev/null +++ b/snippets/snippets/curl/chat-post.sh @@ -0,0 +1,13 @@ +curl --request POST \ + --url https://api.cohere.com/v1/chat \ + --header 'accept: application/json' \ + --header 'content-type: application/json' \ + --header "Authorization: bearer $CO_API_KEY" \ + --data '{ + "chat_history": [ + {"role": "USER", "message": "Who discovered gravity?"}, + {"role": "CHATBOT", "message": "The man who is widely credited with discovering gravity is Sir Isaac Newton"} + ], + "message": "What year was he born?", + "connectors": [{"id": "web-search"}] + }' \ No newline at end of file diff --git a/snippets/snippets/curl/classify-post.sh b/snippets/snippets/curl/classify-post.sh new file mode 100644 index 00000000..da0deee1 --- /dev/null +++ b/snippets/snippets/curl/classify-post.sh @@ -0,0 +1,20 @@ +curl --request POST \ + --url https://api.cohere.com/v1/classify \ + --header 'accept: application/json' \ + --header 'content-type: application/json' \ + --header "Authorization: bearer $CO_API_KEY" \ + --data '{ + "inputs": ["Confirm your email address", "hey i need u to send some $"], + "examples": [ + {"text": "Dermatologists don'\''t like her!","label": "Spam"}, + {"text": "'\''Hello, open to this?'\''","label": "Spam"}, + {"text": "I need help please wire me $1000 right now","label": "Spam"}, + {"text": "Nice to know you ;)","label": "Spam"}, + {"text": "Please help me?","label": "Spam"}, + {"text": "Your parcel will be delivered today","label": "Not spam"}, + {"text": "Review changes to our Terms and Conditions","label": "Not spam"}, + {"text": "Weekly sync notes","label": "Not spam"}, + {"text": "'\''Re: Follow up from today'\''s meeting'\''","label": "Not spam"}, + {"text": "Pre-read for tomorrow","label": "Not spam"} + ] + }' \ No newline at end of file diff --git a/snippets/snippets/curl/connector-create.sh b/snippets/snippets/curl/connector-create.sh new file mode 100644 index 00000000..58cf5e39 --- /dev/null +++ b/snippets/snippets/curl/connector-create.sh @@ -0,0 +1,9 @@ +curl --request POST \ + --url https://api.cohere.com/v1/connectors \ + --header 'accept: application/json' \ + --header 'content-type: application/json' \ + --header "Authorization: bearer $CO_API_KEY" \ + --data '{ + "name": "Example connector", + "url": "https://connector-example.com/search" + }' \ No newline at end of file diff --git a/snippets/snippets/curl/connector-delete.sh b/snippets/snippets/curl/connector-delete.sh new file mode 100644 index 00000000..d892120a --- /dev/null +++ b/snippets/snippets/curl/connector-delete.sh @@ -0,0 +1,4 @@ +curl --request DELETE \ + --url https://api.cohere.com/v1/connectors/id \ + --header 'accept: application/json' \ + --header "Authorization: bearer $CO_API_KEY" \ No newline at end of file diff --git a/snippets/snippets/curl/connector-get.sh b/snippets/snippets/curl/connector-get.sh new file mode 100644 index 00000000..2d926667 --- /dev/null +++ b/snippets/snippets/curl/connector-get.sh @@ -0,0 +1,4 @@ +curl --request GET \ + --url https://api.cohere.com/v1/connectors/id \ + --header 'accept: application/json' \ + --header "Authorization: bearer $CO_API_KEY" \ No newline at end of file diff --git a/snippets/snippets/curl/connector-patch.sh b/snippets/snippets/curl/connector-patch.sh new file mode 100644 index 00000000..fc3a926c --- /dev/null +++ b/snippets/snippets/curl/connector-patch.sh @@ -0,0 +1,9 @@ +curl --request PATCH \ + --url https://api.cohere.com/v1/connectors/id \ + --header 'accept: application/json' \ + --header 'content-type: application/json' \ + --header "Authorization: bearer $CO_API_KEY" \ + --data '{ + "name": "new name", + "url": "https://example.com/search" + }' \ No newline at end of file diff --git a/snippets/snippets/curl/connectors-id-oauth-authorize-post.sh b/snippets/snippets/curl/connectors-id-oauth-authorize-post.sh new file mode 100644 index 00000000..2bed22d7 --- /dev/null +++ b/snippets/snippets/curl/connectors-id-oauth-authorize-post.sh @@ -0,0 +1,4 @@ +curl --request POST \ + --url https://api.cohere.com/v1/connectors/id/oauth/authorize \ + --header 'accept: application/json' \ + --header "Authorization: bearer $CO_API_KEY" \ No newline at end of file diff --git a/snippets/snippets/curl/connectors-list.sh b/snippets/snippets/curl/connectors-list.sh new file mode 100644 index 00000000..f19e23bf --- /dev/null +++ b/snippets/snippets/curl/connectors-list.sh @@ -0,0 +1,4 @@ +curl --request GET \ + --url https://api.cohere.com/v1/connectors \ + --header 'accept: application/json' \ + --header "Authorization: bearer $CO_API_KEY" \ No newline at end of file diff --git a/snippets/snippets/curl/dataset-delete.sh b/snippets/snippets/curl/dataset-delete.sh new file mode 100644 index 00000000..5a3d2151 --- /dev/null +++ b/snippets/snippets/curl/dataset-delete.sh @@ -0,0 +1,5 @@ +curl --request DELETE \ + --url https://api.cohere.com/v1/datasets/id \ + --header 'accept: application/json' \ + --header 'content-type: application/json' \ + --header "Authorization: bearer $CO_API_KEY" \ No newline at end of file diff --git a/snippets/snippets/curl/dataset-get.sh b/snippets/snippets/curl/dataset-get.sh new file mode 100644 index 00000000..519e9bc4 --- /dev/null +++ b/snippets/snippets/curl/dataset-get.sh @@ -0,0 +1,4 @@ +curl --request GET \ + --url https://api.cohere.com/v1/datasets \ + --header 'accept: application/json' \ + --header "Authorization: bearer $CO_API_KEY" \ No newline at end of file diff --git a/snippets/snippets/curl/dataset-post.sh b/snippets/snippets/curl/dataset-post.sh new file mode 100644 index 00000000..a30eb055 --- /dev/null +++ b/snippets/snippets/curl/dataset-post.sh @@ -0,0 +1,5 @@ +curl --request POST \ + --url "https://api.cohere.com/v1/datasets?name=my-dataset&type=generative-finetune-input" \ + --header 'Content-Type: multipart/form-data' \ + --header "Authorization: Bearer $CO_API_KEY" \ + --form file=@./path/to/file.jsonl \ No newline at end of file diff --git a/snippets/snippets/curl/dataset-usage-get.sh b/snippets/snippets/curl/dataset-usage-get.sh new file mode 100644 index 00000000..35c01b01 --- /dev/null +++ b/snippets/snippets/curl/dataset-usage-get.sh @@ -0,0 +1,4 @@ +curl --request GET \ + --url https://api.cohere.com/v1/datasets/usage \ + --header 'accept: application/json' \ + --header "Authorization: bearer $CO_API_KEY" \ No newline at end of file diff --git a/snippets/snippets/curl/detokenize-post.sh b/snippets/snippets/curl/detokenize-post.sh new file mode 100644 index 00000000..b2a0a4a1 --- /dev/null +++ b/snippets/snippets/curl/detokenize-post.sh @@ -0,0 +1,9 @@ +curl --request POST \ + --url https://api.cohere.com/v1/detokenize \ + --header 'accept: application/json' \ + --header 'content-type: application/json' \ + --header "Authorization: bearer $CO_API_KEY" \ + --data '{ + "model": "command", + "tokens": [8466, 5169, 2594, 8, 2792, 43] + }' \ No newline at end of file diff --git a/snippets/snippets/curl/embed-jobs-cancel.sh b/snippets/snippets/curl/embed-jobs-cancel.sh new file mode 100644 index 00000000..0e629837 --- /dev/null +++ b/snippets/snippets/curl/embed-jobs-cancel.sh @@ -0,0 +1,5 @@ +curl --request POST \ + --url https://api.cohere.com/v1/embed-jobs/id/cancel \ + --header 'accept: application/json' \ + --header 'content-type: application/json' \ + --header "Authorization: bearer $CO_API_KEY" \ No newline at end of file diff --git a/snippets/snippets/curl/embed-jobs-get.sh b/snippets/snippets/curl/embed-jobs-get.sh new file mode 100644 index 00000000..eb4be9c9 --- /dev/null +++ b/snippets/snippets/curl/embed-jobs-get.sh @@ -0,0 +1,4 @@ +curl --request GET \ + --url https://api.cohere.com/v1/embed-jobs \ + --header 'accept: application/json' \ + --header "Authorization: bearer $CO_API_KEY" \ No newline at end of file diff --git a/snippets/snippets/curl/embed-jobs-post.sh b/snippets/snippets/curl/embed-jobs-post.sh new file mode 100644 index 00000000..31269c5a --- /dev/null +++ b/snippets/snippets/curl/embed-jobs-post.sh @@ -0,0 +1,9 @@ +curl --request POST \ + --url https://api.cohere.com/v1/embed-jobs \ + --header 'accept: application/json' \ + --header 'content-type: application/json' \ + --header "Authorization: bearer $CO_API_KEY" \ + --data '{ + "model": "embed-english-v3.0", + "dataset_id": "my-dataset" + }' \ No newline at end of file diff --git a/snippets/snippets/curl/embed-post.sh b/snippets/snippets/curl/embed-post.sh new file mode 100644 index 00000000..35e831fc --- /dev/null +++ b/snippets/snippets/curl/embed-post.sh @@ -0,0 +1,10 @@ +curl --request POST \ + --url https://api.cohere.com/v1/embed \ + --header 'accept: application/json' \ + --header 'content-type: application/json' \ + --header "Authorization: bearer $CO_API_KEY" \ + --data '{ + "model": "embed-english-v3.0", + "texts": ["hello", "goodbye"], + "input_type": "classification" + }' \ No newline at end of file diff --git a/snippets/snippets/curl/emebed-jobs-get.sh b/snippets/snippets/curl/emebed-jobs-get.sh new file mode 100644 index 00000000..87159911 --- /dev/null +++ b/snippets/snippets/curl/emebed-jobs-get.sh @@ -0,0 +1,4 @@ +curl --request GET \ + --url https://api.cohere.com/v1/embed-jobs/id \ + --header 'accept: application/json' \ + --header "Authorization: bearer $CO_API_KEY" \ No newline at end of file diff --git a/snippets/snippets/curl/finetuning/create-finetuned-model.sh b/snippets/snippets/curl/finetuning/create-finetuned-model.sh new file mode 100644 index 00000000..424cc7bb --- /dev/null +++ b/snippets/snippets/curl/finetuning/create-finetuned-model.sh @@ -0,0 +1,14 @@ +curl --request POST \ + --url https://api.cohere.com/v1/finetuning/finetuned-models \ + --header 'accept: application/json' \ + --header 'content-type: application/json' \ + --header "Authorization: bearer $CO_API_KEY" \ + --data '{ + "name": "test-finetuned-model", + "settings": { + "base_model": { + "base_type": "BASE_TYPE_GENERATIVE", + }, + "dataset_id": "test-dataset-id" + } + }' diff --git a/snippets/snippets/curl/finetuning/delete-finetuned-model.sh b/snippets/snippets/curl/finetuning/delete-finetuned-model.sh new file mode 100644 index 00000000..2c4cafda --- /dev/null +++ b/snippets/snippets/curl/finetuning/delete-finetuned-model.sh @@ -0,0 +1,4 @@ +curl --request DELETE \ + --url https://api.cohere.com/v1/finetuning/finetuned-models/test-id \ + --header 'accept: application/json' \ + --header "Authorization: bearer $CO_API_KEY" diff --git a/snippets/snippets/curl/finetuning/get-finetuned-model.sh b/snippets/snippets/curl/finetuning/get-finetuned-model.sh new file mode 100644 index 00000000..0a17fda8 --- /dev/null +++ b/snippets/snippets/curl/finetuning/get-finetuned-model.sh @@ -0,0 +1,4 @@ +curl --request GET \ + --url https://api.cohere.com/v1/finetuning/finetuned-models/test-id \ + --header 'accept: application/json' \ + --header "Authorization: bearer $CO_API_KEY" diff --git a/snippets/snippets/curl/finetuning/list-events.sh b/snippets/snippets/curl/finetuning/list-events.sh new file mode 100644 index 00000000..a8fb1e7e --- /dev/null +++ b/snippets/snippets/curl/finetuning/list-events.sh @@ -0,0 +1,4 @@ +curl --request GET \ + --url https://api.cohere.com/v1/finetuning/finetuned-models/test-id/events \ + --header 'accept: application/json' \ + --header "Authorization: bearer $CO_API_KEY" diff --git a/snippets/snippets/curl/finetuning/list-finetuned-models.sh b/snippets/snippets/curl/finetuning/list-finetuned-models.sh new file mode 100644 index 00000000..ba05d53a --- /dev/null +++ b/snippets/snippets/curl/finetuning/list-finetuned-models.sh @@ -0,0 +1,4 @@ +curl --request GET \ + --url https://api.cohere.com/v1/finetuning/finetuned-models \ + --header 'accept: application/json' \ + --header "Authorization: bearer $CO_API_KEY" diff --git a/snippets/snippets/curl/finetuning/list-training-step-metrics.sh b/snippets/snippets/curl/finetuning/list-training-step-metrics.sh new file mode 100644 index 00000000..2c3758e1 --- /dev/null +++ b/snippets/snippets/curl/finetuning/list-training-step-metrics.sh @@ -0,0 +1,4 @@ +curl --request GET \ + --url https://api.cohere.com/v1/finetuning/finetuned-models/test-id/training-step-metrics \ + --header 'accept: application/json' \ + --header "Authorization: bearer $CO_API_KEY" diff --git a/snippets/snippets/curl/finetuning/update-finetuned-model.sh b/snippets/snippets/curl/finetuning/update-finetuned-model.sh new file mode 100644 index 00000000..e3e52b25 --- /dev/null +++ b/snippets/snippets/curl/finetuning/update-finetuned-model.sh @@ -0,0 +1,6 @@ +curl --request PATCH \ + --url https://api.cohere.com/v1/finetuning/finetuned-models/test-id \ + --header 'accept: application/json' \ + --header 'content-type: application/json' \ + --header "Authorization: bearer $CO_API_KEY" \ + --data '{ "name": "new name" }' diff --git a/snippets/snippets/curl/generate-post.sh b/snippets/snippets/curl/generate-post.sh new file mode 100644 index 00000000..084488de --- /dev/null +++ b/snippets/snippets/curl/generate-post.sh @@ -0,0 +1,8 @@ +curl --request POST \ + --url https://api.cohere.com/v1/generate \ + --header 'accept: application/json' \ + --header 'content-type: application/json' \ + --header "Authorization: bearer $CO_API_KEY" \ + --data '{ + "prompt": "Please explain to me how LLMs work" + }' \ No newline at end of file diff --git a/snippets/snippets/curl/models-list-get.sh b/snippets/snippets/curl/models-list-get.sh new file mode 100644 index 00000000..5707a2f7 --- /dev/null +++ b/snippets/snippets/curl/models-list-get.sh @@ -0,0 +1,4 @@ +curl --request GET \ + --url https://api.cohere.com/v1/models \ + --header 'accept: application/json' \ + --header "Authorization: bearer $CO_API_KEY" \ No newline at end of file diff --git a/snippets/snippets/curl/rerank-post.sh b/snippets/snippets/curl/rerank-post.sh new file mode 100644 index 00000000..11dead44 --- /dev/null +++ b/snippets/snippets/curl/rerank-post.sh @@ -0,0 +1,15 @@ +curl --request POST \ + --url https://api.cohere.com/v1/rerank \ + --header 'accept: application/json' \ + --header 'content-type: application/json' \ + --header "Authorization: bearer $CO_API_KEY" \ + --data '{ + "model": "rerank-english-v3.0", + "query": "What is the capital of the United States?", + "top_n": 3, + "documents": ["Carson City is the capital city of the American state of Nevada.", + "The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean. Its capital is Saipan.", + "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district.", + "Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages.", + "Capital punishment (the death penalty) has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states."] + }' \ No newline at end of file diff --git a/snippets/snippets/curl/summarize-post.sh b/snippets/snippets/curl/summarize-post.sh new file mode 100644 index 00000000..4256e22c --- /dev/null +++ b/snippets/snippets/curl/summarize-post.sh @@ -0,0 +1,8 @@ +curl --request POST \ + --url https://api.cohere.com/v1/summarize \ + --header 'accept: application/json' \ + --header 'content-type: application/json' \ + --header "Authorization: bearer $CO_API_KEY" \ + --data '{ + "text": "Ice cream is a sweetened frozen food typically eaten as a snack or dessert. It may be made from milk or cream and is flavoured with a sweetener, either sugar or an alternative, and a spice, such as cocoa or vanilla, or with fruit such as strawberries or peaches. It can also be made by whisking a flavored cream base and liquid nitrogen together. Food coloring is sometimes added, in addition to stabilizers. The mixture is cooled below the freezing point of water and stirred to incorporate air spaces and to prevent detectable ice crystals from forming. The result is a smooth, semi-solid foam that is solid at very low temperatures (below 2 °C or 35 °F). It becomes more malleable as its temperature increases.\n\nThe meaning of the name \"ice cream\" varies from one country to another. In some countries, such as the United States, \"ice cream\" applies only to a specific variety, and most governments regulate the commercial use of the various terms according to the relative quantities of the main ingredients, notably the amount of cream. Products that do not meet the criteria to be called ice cream are sometimes labelled \"frozen dairy dessert\" instead. In other countries, such as Italy and Argentina, one word is used for all variants. Analogues made from dairy alternatives, such as goat'\''s or sheep'\''s milk, or milk substitutes (e.g., soy, cashew, coconut, almond milk or tofu), are available for those who are lactose intolerant, allergic to dairy protein or vegan." + }' \ No newline at end of file diff --git a/snippets/snippets/curl/tokenize-post.sh b/snippets/snippets/curl/tokenize-post.sh new file mode 100644 index 00000000..35e9e851 --- /dev/null +++ b/snippets/snippets/curl/tokenize-post.sh @@ -0,0 +1,9 @@ +curl --request POST \ + --url https://api.cohere.com/v1/tokenize \ + --header 'accept: application/json' \ + --header 'content-type: application/json' \ + --header "Authorization: bearer $CO_API_KEY" \ + --data '{ + "model": "command", + "text": "tokenize me! :D" + }' \ No newline at end of file diff --git a/snippets/snippets/go/chat-post/default/main.go b/snippets/snippets/go/chat-post/default/main.go new file mode 100644 index 00000000..167e1c79 --- /dev/null +++ b/snippets/snippets/go/chat-post/default/main.go @@ -0,0 +1,42 @@ +package main + +import ( + "context" + "log" + + cohere "github.com/cohere-ai/cohere-go/v2" + client "github.com/cohere-ai/cohere-go/v2/client" +) + +func main() { + co := client.NewClient(client.WithToken("<>")) + + resp, err := co.Chat( + context.TODO(), + &cohere.ChatRequest{ + ChatHistory: []*cohere.Message{ + { + Role: "USER", + User: &cohere.ChatMessage{ + Message: "Who discovered gravity?", + }, + }, + { + Role: "CHATBOT", + Chatbot: &cohere.ChatMessage{ + Message: "The man who is widely credited with discovering gravity is Sir Isaac Newton", + }, + }}, + Message: "What year was he born?", + Connectors: []*cohere.ChatConnector{ + {Id: "web-search"}, + }, + }, + ) + + if err != nil { + log.Fatal(err) + } + + log.Printf("%+v", resp) +} diff --git a/snippets/snippets/go/chat-post/documents/main.go b/snippets/snippets/go/chat-post/documents/main.go new file mode 100644 index 00000000..a2151cd3 --- /dev/null +++ b/snippets/snippets/go/chat-post/documents/main.go @@ -0,0 +1,61 @@ +package main + +import ( + "context" + "errors" + "io" + "log" + + cohere "github.com/cohere-ai/cohere-go/v2" + client "github.com/cohere-ai/cohere-go/v2/client" +) + +func main() { + co := client.NewClient(client.WithToken("<>")) + + resp, err := co.ChatStream( + context.TODO(), + &cohere.ChatStreamRequest{ + ChatHistory: []*cohere.Message{ + { + Role: "USER", + User: &cohere.ChatMessage{ + Message: "Who discovered gravity?", + }, + }, + { + Role: "CHATBOT", + Chatbot: &cohere.ChatMessage{ + Message: "The man who is widely credited with discovering gravity is Sir Isaac Newton", + }, + }}, + Message: "What year was he born?", + Connectors: []*cohere.ChatConnector{ + {Id: "web-search"}, + }, + }, + ) + + if err != nil { + log.Fatal(err) + } + + // Make sure to close the stream when you're done reading. + // This is easily handled with defer. + defer resp.Close() + + for { + message, err := resp.Recv() + + if errors.Is(err, io.EOF) { + // An io.EOF error means the server is done sending messages + // and should be treated as a success. + break + } + + if message.TextGeneration != nil { + log.Printf("%+v", resp) + } + } + +} diff --git a/snippets/snippets/go/chat-post/stream/main.go b/snippets/snippets/go/chat-post/stream/main.go new file mode 100644 index 00000000..a2151cd3 --- /dev/null +++ b/snippets/snippets/go/chat-post/stream/main.go @@ -0,0 +1,61 @@ +package main + +import ( + "context" + "errors" + "io" + "log" + + cohere "github.com/cohere-ai/cohere-go/v2" + client "github.com/cohere-ai/cohere-go/v2/client" +) + +func main() { + co := client.NewClient(client.WithToken("<>")) + + resp, err := co.ChatStream( + context.TODO(), + &cohere.ChatStreamRequest{ + ChatHistory: []*cohere.Message{ + { + Role: "USER", + User: &cohere.ChatMessage{ + Message: "Who discovered gravity?", + }, + }, + { + Role: "CHATBOT", + Chatbot: &cohere.ChatMessage{ + Message: "The man who is widely credited with discovering gravity is Sir Isaac Newton", + }, + }}, + Message: "What year was he born?", + Connectors: []*cohere.ChatConnector{ + {Id: "web-search"}, + }, + }, + ) + + if err != nil { + log.Fatal(err) + } + + // Make sure to close the stream when you're done reading. + // This is easily handled with defer. + defer resp.Close() + + for { + message, err := resp.Recv() + + if errors.Is(err, io.EOF) { + // An io.EOF error means the server is done sending messages + // and should be treated as a success. + break + } + + if message.TextGeneration != nil { + log.Printf("%+v", resp) + } + } + +} diff --git a/snippets/snippets/go/chat-post/tools/main.go b/snippets/snippets/go/chat-post/tools/main.go new file mode 100644 index 00000000..7885f14d --- /dev/null +++ b/snippets/snippets/go/chat-post/tools/main.go @@ -0,0 +1,50 @@ +package main + +import ( + "context" + "log" + + cohere "github.com/cohere-ai/cohere-go/v2" + client "github.com/cohere-ai/cohere-go/v2/client" +) + +func main() { + co := client.NewClient(client.WithToken("<>")) + + resp, err := co.Chat( + context.TODO(), + &cohere.ChatRequest{ + Message: "Can you provide a sales summary for 29th September 2023, and also give me some details about the products in the 'Electronics' category, for example their prices and stock levels?", + Tools: []*cohere.Tool{ + { + Name: "query_daily_sales_report", + Description: "Connects to a database to retrieve overall sales volumes and sales information for a given day.", + ParameterDefinitions: map[string]*cohere.ToolParameterDefinitionsValue{ + "day": { + Description: cohere.String("Retrieves sales data for this day, formatted as YYYY-MM-DD."), + Type: "str", + Required: cohere.Bool(true), + }, + }, + }, + { + Name: "query_product_catalog", + Description: "Connects to a a product catalog with information about all the products being sold, including categories, prices, and stock levels.", + ParameterDefinitions: map[string]*cohere.ToolParameterDefinitionsValue{ + "category": { + Description: cohere.String("Retrieves product information data for all products in this category."), + Type: "str", + Required: cohere.Bool(true), + }, + }, + }, + }, + }, + ) + + if err != nil { + log.Fatal(err) + } + + log.Printf("%+v", resp) +} diff --git a/snippets/snippets/go/classify-post/main.go b/snippets/snippets/go/classify-post/main.go new file mode 100644 index 00000000..5ac4314f --- /dev/null +++ b/snippets/snippets/go/classify-post/main.go @@ -0,0 +1,44 @@ +package main + +import ( + "context" + "log" + + cohere "github.com/cohere-ai/cohere-go/v2" + client "github.com/cohere-ai/cohere-go/v2/client" +) + +func main() { + co := client.NewClient(client.WithToken("<>")) + + resp, err := co.Classify( + context.TODO(), + &cohere.ClassifyRequest{ + Examples: []*cohere.ClassifyExample{ + { + Text: cohere.String("orange"), + Label: cohere.String("fruit"), + }, + { + Text: cohere.String("pear"), + Label: cohere.String("fruit"), + }, + { + Text: cohere.String("lettuce"), + Label: cohere.String("vegetable"), + }, + { + Text: cohere.String("cauliflower"), + Label: cohere.String("vegetable"), + }, + }, + Inputs: []string{"peach"}, + }, + ) + + if err != nil { + log.Fatal(err) + } + + log.Printf("%+v", resp) +} diff --git a/snippets/snippets/go/connector-create/main.go b/snippets/snippets/go/connector-create/main.go new file mode 100644 index 00000000..7c233eed --- /dev/null +++ b/snippets/snippets/go/connector-create/main.go @@ -0,0 +1,31 @@ +package main + +import ( + "context" + "log" + + cohere "github.com/cohere-ai/cohere-go/v2" + client "github.com/cohere-ai/cohere-go/v2/client" +) + +func main() { + co := client.NewClient(client.WithToken("<>")) + + resp, err := co.Connectors.Create( + context.TODO(), + &cohere.CreateConnectorRequest{ + Name: "Example connector", + Url: "https://you-connector-url", + ServiceAuth: &cohere.CreateConnectorServiceAuth{ + Token: "dummy-connector-token", + Type: "bearer", + }, + }, + ) + + if err != nil { + log.Fatal(err) + } + + log.Printf("%+v", resp) +} diff --git a/snippets/snippets/go/connector-delete/main.go b/snippets/snippets/go/connector-delete/main.go new file mode 100644 index 00000000..ca2625b1 --- /dev/null +++ b/snippets/snippets/go/connector-delete/main.go @@ -0,0 +1,20 @@ +package main + +import ( + "context" + "log" + + client "github.com/cohere-ai/cohere-go/v2/client" +) + +func main() { + co := client.NewClient(client.WithToken("<>")) + + resp, err := co.Connectors.Delete(context.TODO(), "connector_id") + + if err != nil { + log.Fatal(err) + } + + log.Printf("%+v", resp) +} diff --git a/snippets/snippets/go/connector-get/main.go b/snippets/snippets/go/connector-get/main.go new file mode 100644 index 00000000..c1626cf2 --- /dev/null +++ b/snippets/snippets/go/connector-get/main.go @@ -0,0 +1,20 @@ +package main + +import ( + "context" + "log" + + client "github.com/cohere-ai/cohere-go/v2/client" +) + +func main() { + co := client.NewClient(client.WithToken("<>")) + + resp, err := co.Connectors.Get(context.TODO(), "connector_id") + + if err != nil { + log.Fatal(err) + } + + log.Printf("%+v", resp) +} diff --git a/snippets/snippets/go/connector-patch/main.go b/snippets/snippets/go/connector-patch/main.go new file mode 100644 index 00000000..ab156dab --- /dev/null +++ b/snippets/snippets/go/connector-patch/main.go @@ -0,0 +1,27 @@ +package main + +import ( + "context" + "log" + + cohere "github.com/cohere-ai/cohere-go/v2" + client "github.com/cohere-ai/cohere-go/v2/client" +) + +func main() { + co := client.NewClient(client.WithToken("<>")) + + resp, err := co.Connectors.Update( + context.TODO(), + "connector_id", + &cohere.UpdateConnectorRequest{ + Name: cohere.String("Example connector renamed"), + }, + ) + + if err != nil { + log.Fatal(err) + } + + log.Printf("%+v", resp) +} diff --git a/snippets/snippets/go/connectors-id-oauth-authorize-post/main.go b/snippets/snippets/go/connectors-id-oauth-authorize-post/main.go new file mode 100644 index 00000000..fb4da16e --- /dev/null +++ b/snippets/snippets/go/connectors-id-oauth-authorize-post/main.go @@ -0,0 +1,27 @@ +package main + +import ( + "context" + "log" + + cohere "github.com/cohere-ai/cohere-go/v2" + client "github.com/cohere-ai/cohere-go/v2/client" +) + +func main() { + co := client.NewClient(client.WithToken("<>")) + + resp, err := co.Connectors.OAuthAuthorize( + context.TODO(), + "connector_id", + &cohere.ConnectorsOAuthAuthorizeRequest{ + AfterTokenRedirect: cohere.String("https://test.com"), + }, + ) + + if err != nil { + log.Fatal(err) + } + + log.Printf("%+v", resp) +} diff --git a/snippets/snippets/go/connectors-list/main.go b/snippets/snippets/go/connectors-list/main.go new file mode 100644 index 00000000..5ea83ad1 --- /dev/null +++ b/snippets/snippets/go/connectors-list/main.go @@ -0,0 +1,23 @@ +package main + +import ( + "context" + "log" + + cohere "github.com/cohere-ai/cohere-go/v2" + client "github.com/cohere-ai/cohere-go/v2/client" +) + +func main() { + co := client.NewClient(client.WithToken("<>")) + + resp, err := co.Connectors.List( + context.TODO(), + &cohere.ConnectorsListRequest{}) + + if err != nil { + log.Fatal(err) + } + + log.Printf("%+v", resp) +} diff --git a/snippets/snippets/go/dataset-delete/main.go b/snippets/snippets/go/dataset-delete/main.go new file mode 100644 index 00000000..00ea89eb --- /dev/null +++ b/snippets/snippets/go/dataset-delete/main.go @@ -0,0 +1,19 @@ +package main + +import ( + "context" + "log" + + client "github.com/cohere-ai/cohere-go/v2/client" +) + +func main() { + co := client.NewClient(client.WithToken("<>")) + + _, err := co.Datasets.Delete(context.TODO(), "dataset_id") + + if err != nil { + log.Fatal(err) + } + +} diff --git a/snippets/snippets/go/dataset-get/main.go b/snippets/snippets/go/dataset-get/main.go new file mode 100644 index 00000000..325c8ec8 --- /dev/null +++ b/snippets/snippets/go/dataset-get/main.go @@ -0,0 +1,20 @@ +package main + +import ( + "context" + "log" + + client "github.com/cohere-ai/cohere-go/v2/client" +) + +func main() { + co := client.NewClient(client.WithToken("<>")) + + resp, err := co.Datasets.Get(context.TODO(), "dataset_id") + + if err != nil { + log.Fatal(err) + } + + log.Printf("%+v", resp) +} diff --git a/snippets/snippets/go/dataset-post/main.go b/snippets/snippets/go/dataset-post/main.go new file mode 100644 index 00000000..e6d0b2da --- /dev/null +++ b/snippets/snippets/go/dataset-post/main.go @@ -0,0 +1,40 @@ +package main + +import ( + "context" + "io" + "log" + "strings" + + cohere "github.com/cohere-ai/cohere-go/v2" + client "github.com/cohere-ai/cohere-go/v2/client" +) + +type MyReader struct { + io.Reader + name string +} + +func (m *MyReader) Name() string { + return m.name +} + +func main() { + co := client.NewClient(client.WithToken("<>")) + + resp, err := co.Datasets.Create( + context.TODO(), + &MyReader{Reader: strings.NewReader(`{"text": "The quick brown fox jumps over the lazy dog"}`), name: "test.jsonl"}, + &MyReader{Reader: strings.NewReader(""), name: "a.jsonl"}, + &cohere.DatasetsCreateRequest{ + Name: "prompt-completion-dataset", + Type: cohere.DatasetTypeEmbedResult, + }, + ) + + if err != nil { + log.Fatal(err) + } + + log.Printf("%+v", resp) +} diff --git a/snippets/snippets/go/dataset-usage-get/main.go b/snippets/snippets/go/dataset-usage-get/main.go new file mode 100644 index 00000000..30d6c4ef --- /dev/null +++ b/snippets/snippets/go/dataset-usage-get/main.go @@ -0,0 +1,20 @@ +package main + +import ( + "context" + "log" + + client "github.com/cohere-ai/cohere-go/v2/client" +) + +func main() { + co := client.NewClient(client.WithToken("<>")) + + resp, err := co.Datasets.GetUsage(context.TODO()) + + if err != nil { + log.Fatal(err) + } + + log.Printf("%+v", resp) +} diff --git a/snippets/snippets/go/detokenize-post/main.go b/snippets/snippets/go/detokenize-post/main.go new file mode 100644 index 00000000..940f2013 --- /dev/null +++ b/snippets/snippets/go/detokenize-post/main.go @@ -0,0 +1,26 @@ +package main + +import ( + "context" + "log" + + cohere "github.com/cohere-ai/cohere-go/v2" + client "github.com/cohere-ai/cohere-go/v2/client" +) + +func main() { + co := client.NewClient(client.WithToken("<>")) + + resp, err := co.Detokenize( + context.TODO(), + &cohere.DetokenizeRequest{ + Tokens: []int{10002, 1706, 1722, 5169, 4328}, + }, + ) + + if err != nil { + log.Fatal(err) + } + + log.Printf("%+v", resp) +} diff --git a/snippets/snippets/go/embed-jobs-cancel/main.go b/snippets/snippets/go/embed-jobs-cancel/main.go new file mode 100644 index 00000000..265465a4 --- /dev/null +++ b/snippets/snippets/go/embed-jobs-cancel/main.go @@ -0,0 +1,19 @@ +package main + +import ( + "context" + "log" + + client "github.com/cohere-ai/cohere-go/v2/client" +) + +func main() { + co := client.NewClient(client.WithToken("<>")) + + err := co.EmbedJobs.Cancel(context.TODO(), "embed_job_id") + + if err != nil { + log.Fatal(err) + } + +} diff --git a/snippets/snippets/go/embed-jobs-get/main.go b/snippets/snippets/go/embed-jobs-get/main.go new file mode 100644 index 00000000..fbcf230a --- /dev/null +++ b/snippets/snippets/go/embed-jobs-get/main.go @@ -0,0 +1,20 @@ +package main + +import ( + "context" + "log" + + client "github.com/cohere-ai/cohere-go/v2/client" +) + +func main() { + co := client.NewClient(client.WithToken("<>")) + + resp, err := co.EmbedJobs.Get(context.TODO(), "embed_job_id") + + if err != nil { + log.Fatal(err) + } + + log.Printf("%+v", resp) +} diff --git a/snippets/snippets/go/embed-jobs-post/main.go b/snippets/snippets/go/embed-jobs-post/main.go new file mode 100644 index 00000000..a2dd3e14 --- /dev/null +++ b/snippets/snippets/go/embed-jobs-post/main.go @@ -0,0 +1,27 @@ +package main + +import ( + "context" + "log" + + cohere "github.com/cohere-ai/cohere-go/v2" + client "github.com/cohere-ai/cohere-go/v2/client" +) + +func main() { + co := client.NewClient(client.WithToken("<>")) + + resp, err := co.EmbedJobs.Create( + context.TODO(), + &cohere.CreateEmbedJobRequest{ + DatasetId: "dataset_id", + InputType: cohere.EmbedInputTypeSearchDocument, + }, + ) + + if err != nil { + log.Fatal(err) + } + + log.Printf("%+v", resp) +} diff --git a/snippets/snippets/go/embed-post/main.go b/snippets/snippets/go/embed-post/main.go new file mode 100644 index 00000000..415abb43 --- /dev/null +++ b/snippets/snippets/go/embed-post/main.go @@ -0,0 +1,28 @@ +package main + +import ( + "context" + "log" + + cohere "github.com/cohere-ai/cohere-go/v2" + client "github.com/cohere-ai/cohere-go/v2/client" +) + +func main() { + co := client.NewClient(client.WithToken("<>")) + + resp, err := co.Embed( + context.TODO(), + &cohere.EmbedRequest{ + Texts: []string{"hello", "goodbye"}, + Model: cohere.String("embed-english-v3.0"), + InputType: cohere.EmbedInputTypeSearchDocument.Ptr(), + }, + ) + + if err != nil { + log.Fatal(err) + } + + log.Printf("%+v", resp) +} diff --git a/snippets/snippets/go/emebed-jobs-get/main.go b/snippets/snippets/go/emebed-jobs-get/main.go new file mode 100644 index 00000000..da6f8e9a --- /dev/null +++ b/snippets/snippets/go/emebed-jobs-get/main.go @@ -0,0 +1,20 @@ +package main + +import ( + "context" + "log" + + client "github.com/cohere-ai/cohere-go/v2/client" +) + +func main() { + co := client.NewClient(client.WithToken("<>")) + + resp, err := co.EmbedJobs.List(context.TODO()) + + if err != nil { + log.Fatal(err) + } + + log.Printf("%+v", resp) +} diff --git a/snippets/snippets/go/finetuning/create-finetuned-model/main.go b/snippets/snippets/go/finetuning/create-finetuned-model/main.go new file mode 100644 index 00000000..aee7b102 --- /dev/null +++ b/snippets/snippets/go/finetuning/create-finetuned-model/main.go @@ -0,0 +1,31 @@ +package main + +import ( + "context" + "log" + + "github.com/cohere-ai/cohere-go/v2/client" + "github.com/cohere-ai/cohere-go/v2/finetuning" +) + +func main() { + co := client.NewClient(client.WithToken("<>")) + + resp, err := co.Finetuning.CreateFinetunedModel( + context.TODO(), + &finetuning.FinetunedModel{ + Name: "test-finetuned-model", + Settings: &finetuning.Settings{ + DatasetId: "my-dataset-id", + BaseModel: &finetuning.BaseModel{ + BaseType: finetuning.BaseTypeBaseTypeGenerative, + }, + }, + }, + ) + if err != nil { + log.Fatal(err) + } + + log.Printf("%+v", resp.FinetunedModel) +} diff --git a/snippets/snippets/go/finetuning/delete-finetuned-model/main.go b/snippets/snippets/go/finetuning/delete-finetuned-model/main.go new file mode 100644 index 00000000..134fda50 --- /dev/null +++ b/snippets/snippets/go/finetuning/delete-finetuned-model/main.go @@ -0,0 +1,17 @@ +package main + +import ( + "context" + "log" + + "github.com/cohere-ai/cohere-go/v2/client" +) + +func main() { + co := client.NewClient(client.WithToken("<>")) + + _, err := co.Finetuning.DeleteFinetunedModel(context.TODO(), "test-id") + if err != nil { + log.Fatal(err) + } +} diff --git a/snippets/snippets/go/finetuning/get-finetuned-model/main.go b/snippets/snippets/go/finetuning/get-finetuned-model/main.go new file mode 100644 index 00000000..985e331a --- /dev/null +++ b/snippets/snippets/go/finetuning/get-finetuned-model/main.go @@ -0,0 +1,19 @@ +package main + +import ( + "context" + "log" + + "github.com/cohere-ai/cohere-go/v2/client" +) + +func main() { + co := client.NewClient(client.WithToken("<>")) + + resp, err := co.Finetuning.GetFinetunedModel(context.TODO(), "test-id") + if err != nil { + log.Fatal(err) + } + + log.Printf("%+v", resp.FinetunedModel) +} diff --git a/snippets/snippets/go/finetuning/list-events/main.go b/snippets/snippets/go/finetuning/list-events/main.go new file mode 100644 index 00000000..7d765b5c --- /dev/null +++ b/snippets/snippets/go/finetuning/list-events/main.go @@ -0,0 +1,23 @@ +package main + +import ( + "context" + "log" + + "github.com/cohere-ai/cohere-go/v2/client" +) + +func main() { + co := client.NewClient(client.WithToken("<>")) + + resp, err := co.Finetuning.ListEvents( + context.TODO(), + "test-finetuned-model-id", + nil, + ) + if err != nil { + log.Fatal(err) + } + + log.Printf("%+v", resp.Events) +} diff --git a/snippets/snippets/go/finetuning/list-finetuned-models/main.go b/snippets/snippets/go/finetuning/list-finetuned-models/main.go new file mode 100644 index 00000000..0a909f36 --- /dev/null +++ b/snippets/snippets/go/finetuning/list-finetuned-models/main.go @@ -0,0 +1,19 @@ +package main + +import ( + "context" + "log" + + "github.com/cohere-ai/cohere-go/v2/client" +) + +func main() { + co := client.NewClient(client.WithToken("<>")) + + resp, err := co.Finetuning.ListFinetunedModels(context.TODO(), nil) + if err != nil { + log.Fatal(err) + } + + log.Printf("%+v", resp.FinetunedModels) +} diff --git a/snippets/snippets/go/finetuning/list-training-step-metrics/main.go b/snippets/snippets/go/finetuning/list-training-step-metrics/main.go new file mode 100644 index 00000000..709eabc9 --- /dev/null +++ b/snippets/snippets/go/finetuning/list-training-step-metrics/main.go @@ -0,0 +1,23 @@ +package main + +import ( + "context" + "log" + + "github.com/cohere-ai/cohere-go/v2/client" +) + +func main() { + co := client.NewClient(client.WithToken("<>")) + + resp, err := co.Finetuning.ListTrainingStepMetrics( + context.TODO(), + "test-finetuned-model-id", + nil, + ) + if err != nil { + log.Fatal(err) + } + + log.Printf("%+v", resp.StepMetrics) +} diff --git a/snippets/snippets/go/finetuning/update-finetuned-model/main.go b/snippets/snippets/go/finetuning/update-finetuned-model/main.go new file mode 100644 index 00000000..aacec03d --- /dev/null +++ b/snippets/snippets/go/finetuning/update-finetuned-model/main.go @@ -0,0 +1,26 @@ +package main + +import ( + "context" + "log" + + cohere "github.com/cohere-ai/cohere-go/v2" + "github.com/cohere-ai/cohere-go/v2/client" +) + +func main() { + co := client.NewClient(client.WithToken("<>")) + + resp, err := co.Finetuning.UpdateFinetunedModel( + context.TODO(), + "test-id", + &cohere.FinetuningUpdateFinetunedModelRequest{ + Name: "new-name", + }, + ) + if err != nil { + log.Fatal(err) + } + + log.Printf("%+v", resp.FinetunedModel) +} diff --git a/snippets/snippets/go/generate-post/main.go b/snippets/snippets/go/generate-post/main.go new file mode 100644 index 00000000..04f71740 --- /dev/null +++ b/snippets/snippets/go/generate-post/main.go @@ -0,0 +1,44 @@ +package main + +import ( + "context" + "errors" + "io" + "log" + + cohere "github.com/cohere-ai/cohere-go/v2" + client "github.com/cohere-ai/cohere-go/v2/client" +) + +func main() { + co := client.NewClient(client.WithToken("<>")) + + resp, err := co.GenerateStream( + context.TODO(), + &cohere.GenerateStreamRequest{ + Prompt: "Please explain to me how LLMs work", + }, + ) + + if err != nil { + log.Fatal(err) + } + + // Make sure to close the stream when you're done reading. + // This is easily handled with defer. + defer resp.Close() + + for { + message, err := resp.Recv() + + if errors.Is(err, io.EOF) { + // An io.EOF error means the server is done sending messages + // and should be treated as a success. + break + } + + if message.TextGeneration != nil { + log.Printf("%+v", resp) + } + } +} diff --git a/snippets/snippets/go/models-list-get/main.go b/snippets/snippets/go/models-list-get/main.go new file mode 100644 index 00000000..79916b7c --- /dev/null +++ b/snippets/snippets/go/models-list-get/main.go @@ -0,0 +1,21 @@ +package main + +import ( + "context" + "log" + + cohere "github.com/cohere-ai/cohere-go/v2" + client "github.com/cohere-ai/cohere-go/v2/client" +) + +func main() { + co := client.NewClient(client.WithToken("<>")) + + resp, err := co.Models.List(context.TODO(), &cohere.ModelsListRequest{}) + + if err != nil { + log.Fatal(err) + } + + log.Printf("%+v", resp) +} diff --git a/snippets/snippets/go/rerank-post/main.go b/snippets/snippets/go/rerank-post/main.go new file mode 100644 index 00000000..ddba4a22 --- /dev/null +++ b/snippets/snippets/go/rerank-post/main.go @@ -0,0 +1,33 @@ +package main + +import ( + "context" + "log" + + cohere "github.com/cohere-ai/cohere-go/v2" + client "github.com/cohere-ai/cohere-go/v2/client" +) + +func main() { + co := client.NewClient(client.WithToken("<>")) + + resp, err := co.Rerank( + context.TODO(), + &cohere.RerankRequest{ + Query: "What is the capital of the United States?", + Documents: []*cohere.RerankRequestDocumentsItem{ + {String: "Carson City is the capital city of the American state of Nevada."}, + {String: "The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean. Its capital is Saipan."}, + {String: "Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages."}, + {String: "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district."}, + }, + Model: cohere.String("rerank-english-v3.0"), + }, + ) + + if err != nil { + log.Fatal(err) + } + + log.Printf("%+v", resp) +} diff --git a/snippets/snippets/go/summarize-post/main.go b/snippets/snippets/go/summarize-post/main.go new file mode 100644 index 00000000..ae473f87 --- /dev/null +++ b/snippets/snippets/go/summarize-post/main.go @@ -0,0 +1,26 @@ +package main + +import ( + "context" + "log" + + cohere "github.com/cohere-ai/cohere-go/v2" + client "github.com/cohere-ai/cohere-go/v2/client" +) + +func main() { + co := client.NewClient(client.WithToken("<>")) + + resp, err := co.Summarize( + context.TODO(), + &cohere.SummarizeRequest{ + Text: "the quick brown fox jumped over the lazy dog and then the dog jumped over the fox the quick brown fox jumped over the lazy dog the quick brown fox jumped over the lazy dog the quick brown fox jumped over the lazy dog the quick brown fox jumped over the lazy dog", + }, + ) + + if err != nil { + log.Fatal(err) + } + + log.Printf("%+v", resp) +} diff --git a/snippets/snippets/go/tokenize-post/main.go b/snippets/snippets/go/tokenize-post/main.go new file mode 100644 index 00000000..fc67f83b --- /dev/null +++ b/snippets/snippets/go/tokenize-post/main.go @@ -0,0 +1,27 @@ +package main + +import ( + "context" + "log" + + cohere "github.com/cohere-ai/cohere-go/v2" + client "github.com/cohere-ai/cohere-go/v2/client" +) + +func main() { + co := client.NewClient(client.WithToken("<>")) + + resp, err := co.Tokenize( + context.TODO(), + &cohere.TokenizeRequest{ + Text: "cohere <3", + Model: "base", + }, + ) + + if err != nil { + log.Fatal(err) + } + + log.Printf("%+v", resp) +} diff --git a/snippets/snippets/java/.gitattributes b/snippets/snippets/java/.gitattributes new file mode 100644 index 00000000..097f9f98 --- /dev/null +++ b/snippets/snippets/java/.gitattributes @@ -0,0 +1,9 @@ +# +# https://help.github.com/articles/dealing-with-line-endings/ +# +# Linux start script should use lf +/gradlew text eol=lf + +# These are Windows script files and should use crlf +*.bat text eol=crlf + diff --git a/snippets/snippets/java/.gitignore b/snippets/snippets/java/.gitignore new file mode 100644 index 00000000..1b6985c0 --- /dev/null +++ b/snippets/snippets/java/.gitignore @@ -0,0 +1,5 @@ +# Ignore Gradle project-specific cache directory +.gradle + +# Ignore Gradle build output directory +build diff --git a/snippets/snippets/java/app/build.gradle b/snippets/snippets/java/app/build.gradle new file mode 100644 index 00000000..da819103 --- /dev/null +++ b/snippets/snippets/java/app/build.gradle @@ -0,0 +1,74 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * This generated file contains a sample Java application project to get you started. + * For more details on building Java & JVM projects, please refer to https://docs.gradle.org/8.5/userguide/building_java_projects.html in the Gradle documentation. + */ + +plugins { + // Apply the application plugin to add support for building a CLI application in Java. + id 'application' + + id("com.diffplug.spotless") version "6.25.0" +} + +repositories { + // Use Maven Central for resolving dependencies. + mavenCentral() +} + +dependencies { + // Use JUnit Jupiter for testing. + testImplementation libs.junit.jupiter + + testRuntimeOnly 'org.junit.platform:junit-platform-launcher' + + // This dependency is used by the application. + implementation libs.guava + + implementation 'com.cohere:cohere-java:+' +} + +spotless { + // optional: limit format enforcement to just the files changed by this feature branch + ratchetFrom 'origin/main' + + format 'misc', { + // define the files to apply `misc` to + target '*.gradle', '.gitattributes', '.gitignore' + + // define the steps to apply to those files + trimTrailingWhitespace() + indentWithTabs() // or spaces. Takes an integer argument if you don't like 4 + endWithNewline() + } + java { + // don't need to set target, it is inferred from java + + // apply a specific flavor of google-java-format + googleJavaFormat('1.17.0').aosp().reflowLongStrings().skipJavadocFormatting() + // fix formatting of type annotations + formatAnnotations() + // make sure every file has the following copyright header. + // optionally, Spotless can set copyright years by digging + // through git history (see "license" section below) + licenseHeader '/* (C)$YEAR */' + } +} + + +// Apply a specific Java toolchain to ease working on different environments. +java { + toolchain { + languageVersion = JavaLanguageVersion.of(21) + } +} + +application { + mainClassName = project.hasProperty("mainClass") ? project.getProperty("mainClass") : "NULL" +} + +tasks.named('test') { + // Use JUnit Platform for unit tests. + useJUnitPlatform() +} diff --git a/snippets/snippets/java/app/src/main/java/ClassifyPost.java b/snippets/snippets/java/app/src/main/java/ClassifyPost.java new file mode 100644 index 00000000..4be4c008 --- /dev/null +++ b/snippets/snippets/java/app/src/main/java/ClassifyPost.java @@ -0,0 +1,30 @@ +import com.cohere.api.Cohere; +import com.cohere.api.requests.ClassifyRequest; +import com.cohere.api.types.ClassifyExample; +import com.cohere.api.types.ClassifyResponse; + +import java.util.List; + + +public class ClassifyPost { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("<>").clientName("snippet").build(); + + ClassifyResponse response = cohere.classify(ClassifyRequest.builder().addAllInputs( + List.of("Confirm your email address", "hey i need u to send some $") + ).examples(List.of( + ClassifyExample.builder().text("Dermatologists don't like her!").label("Spam").build(), + ClassifyExample.builder().text("'Hello, open to this?'").label("Spam").build(), + ClassifyExample.builder().text("I need help please wire me $1000 right now").label("Spam").build(), + ClassifyExample.builder().text("Nice to know you ;)").label("Spam").build(), + ClassifyExample.builder().text("Please help me?").label("Spam").build(), + ClassifyExample.builder().text("Your parcel will be delivered today").label("Not spam").build(), + ClassifyExample.builder().text("Review changes to our Terms and Conditions").label("Not spam").build(), + ClassifyExample.builder().text("Weekly sync notes").label("Not spam").build(), + ClassifyExample.builder().text("'Re: Follow up from today's meeting'").label("Not spam").build(), + ClassifyExample.builder().text("Pre-read for tomorrow").label("Not spam").build() + )).build()); + + System.out.println(response); + } +} diff --git a/snippets/snippets/java/app/src/main/java/ConnectorCreate.java b/snippets/snippets/java/app/src/main/java/ConnectorCreate.java new file mode 100644 index 00000000..2bd9fefd --- /dev/null +++ b/snippets/snippets/java/app/src/main/java/ConnectorCreate.java @@ -0,0 +1,16 @@ +import com.cohere.api.Cohere; +import com.cohere.api.resources.connectors.requests.CreateConnectorRequest; +import com.cohere.api.types.CreateConnectorResponse; + + +public class ConnectorCreate { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("<>").clientName("snippet").build(); + + CreateConnectorResponse response = cohere.connectors().create(CreateConnectorRequest.builder() + .name("Example connector") + .url("https://connector-example.com/search").build()); + + System.out.println(response); + } +} diff --git a/snippets/snippets/java/app/src/main/java/ConnectorDelete.java b/snippets/snippets/java/app/src/main/java/ConnectorDelete.java new file mode 100644 index 00000000..4b954df9 --- /dev/null +++ b/snippets/snippets/java/app/src/main/java/ConnectorDelete.java @@ -0,0 +1,11 @@ +import com.cohere.api.Cohere; + + +public class ConnectorDelete { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("<>").clientName("snippet").build(); + + cohere.connectors().delete("test-id"); + } +} + diff --git a/snippets/snippets/java/app/src/main/java/ConnectorGet.java b/snippets/snippets/java/app/src/main/java/ConnectorGet.java new file mode 100644 index 00000000..fc6727bc --- /dev/null +++ b/snippets/snippets/java/app/src/main/java/ConnectorGet.java @@ -0,0 +1,13 @@ +import com.cohere.api.Cohere; +import com.cohere.api.types.GetConnectorResponse; + + +public class ConnectorGet { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("<>").clientName("snippet").build(); + + GetConnectorResponse response = cohere.connectors().get("test-id"); + + System.out.println(response); + } +} diff --git a/snippets/snippets/java/app/src/main/java/ConnectorPatch.java b/snippets/snippets/java/app/src/main/java/ConnectorPatch.java new file mode 100644 index 00000000..0dd78028 --- /dev/null +++ b/snippets/snippets/java/app/src/main/java/ConnectorPatch.java @@ -0,0 +1,13 @@ +import com.cohere.api.Cohere; +import com.cohere.api.resources.connectors.requests.UpdateConnectorRequest; + + +public class ConnectorPatch { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("<>").clientName("snippet").build(); + + cohere.connectors().update("test-id", UpdateConnectorRequest.builder() + .name("new name") + .url("https://connector-example.com/search").build()); + } +} diff --git a/snippets/snippets/java/app/src/main/java/ConnectorsIdOauthAuthorizePost.java b/snippets/snippets/java/app/src/main/java/ConnectorsIdOauthAuthorizePost.java new file mode 100644 index 00000000..fcef75a7 --- /dev/null +++ b/snippets/snippets/java/app/src/main/java/ConnectorsIdOauthAuthorizePost.java @@ -0,0 +1,14 @@ +import com.cohere.api.Cohere; +import com.cohere.api.resources.connectors.requests.ConnectorsOAuthAuthorizeRequest; +import com.cohere.api.types.OAuthAuthorizeResponse; + + +public class ConnectorsIdOauthAuthorizePost { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("<>").clientName("snippet").build(); + + OAuthAuthorizeResponse response = cohere.connectors().oAuthAuthorize("test-id", ConnectorsOAuthAuthorizeRequest.builder().afterTokenRedirect("https://connector-example.com/search").build()); + + System.out.println(response); + } +} diff --git a/snippets/snippets/java/app/src/main/java/ConnectorsList.java b/snippets/snippets/java/app/src/main/java/ConnectorsList.java new file mode 100644 index 00000000..866a4c76 --- /dev/null +++ b/snippets/snippets/java/app/src/main/java/ConnectorsList.java @@ -0,0 +1,13 @@ +import com.cohere.api.Cohere; +import com.cohere.api.types.ListConnectorsResponse; + + +public class ConnectorsList { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("<>").clientName("snippet").build(); + + ListConnectorsResponse list = cohere.connectors().list(); + + System.out.println(list); + } +} diff --git a/snippets/snippets/java/app/src/main/java/DatasetDelete.java b/snippets/snippets/java/app/src/main/java/DatasetDelete.java new file mode 100644 index 00000000..8faf5eb6 --- /dev/null +++ b/snippets/snippets/java/app/src/main/java/DatasetDelete.java @@ -0,0 +1,11 @@ +import com.cohere.api.Cohere; + + +public class DatasetDelete { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("<>").clientName("snippet").build(); + + cohere.datasets().delete("id"); + + } +} diff --git a/snippets/snippets/java/app/src/main/java/DatasetGet.java b/snippets/snippets/java/app/src/main/java/DatasetGet.java new file mode 100644 index 00000000..044b83cd --- /dev/null +++ b/snippets/snippets/java/app/src/main/java/DatasetGet.java @@ -0,0 +1,13 @@ +import com.cohere.api.Cohere; +import com.cohere.api.resources.datasets.types.DatasetsGetResponse; + + +public class DatasetGet { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("<>").clientName("snippet").build(); + + DatasetsGetResponse response = cohere.datasets().get("dataset_id"); + + System.out.println(response); + } +} diff --git a/snippets/snippets/java/app/src/main/java/DatasetPost.java b/snippets/snippets/java/app/src/main/java/DatasetPost.java new file mode 100644 index 00000000..9022aa20 --- /dev/null +++ b/snippets/snippets/java/app/src/main/java/DatasetPost.java @@ -0,0 +1,17 @@ +import com.cohere.api.Cohere; +import com.cohere.api.resources.datasets.requests.DatasetsCreateRequest; +import com.cohere.api.resources.datasets.types.DatasetsCreateResponse; +import com.cohere.api.types.DatasetType; + +import java.util.Optional; + + +public class DatasetPost { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("<>").clientName("snippet").build(); + + DatasetsCreateResponse response = cohere.datasets().create(null, Optional.empty(), DatasetsCreateRequest.builder().name("prompt-completion-dataset").type(DatasetType.PROMPT_COMPLETION_FINETUNE_INPUT).build()); + + System.out.println(response); + } +} diff --git a/snippets/snippets/java/app/src/main/java/DatasetUsageGet.java b/snippets/snippets/java/app/src/main/java/DatasetUsageGet.java new file mode 100644 index 00000000..12a01748 --- /dev/null +++ b/snippets/snippets/java/app/src/main/java/DatasetUsageGet.java @@ -0,0 +1,13 @@ +import com.cohere.api.Cohere; +import com.cohere.api.resources.datasets.types.DatasetsGetUsageResponse; + + +public class DatasetUsageGet { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("<>").clientName("snippet").build(); + + DatasetsGetUsageResponse response = cohere.datasets().getUsage(); + + System.out.println(response); + } +} diff --git a/snippets/snippets/java/app/src/main/java/DetokenizePost.java b/snippets/snippets/java/app/src/main/java/DetokenizePost.java new file mode 100644 index 00000000..cc776ae6 --- /dev/null +++ b/snippets/snippets/java/app/src/main/java/DetokenizePost.java @@ -0,0 +1,18 @@ +import com.cohere.api.Cohere; +import com.cohere.api.requests.DetokenizeRequest; +import com.cohere.api.types.DetokenizeResponse; + +import java.util.List; + + +public class DetokenizePost { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("<>").clientName("snippet").build(); + + DetokenizeResponse response = cohere.detokenize( + DetokenizeRequest.builder().model("command").tokens(List.of(8466, 5169, 2594, 8, 2792, 43)).build() + ); + + System.out.println(response); + } +} diff --git a/snippets/snippets/java/app/src/main/java/EmbedJobsCancel.java b/snippets/snippets/java/app/src/main/java/EmbedJobsCancel.java new file mode 100644 index 00000000..56ebbeba --- /dev/null +++ b/snippets/snippets/java/app/src/main/java/EmbedJobsCancel.java @@ -0,0 +1,10 @@ +import com.cohere.api.Cohere; + + +public class EmbedJobsCancel { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("<>").clientName("snippet").build(); + + cohere.embedJobs().cancel("job_id"); + } +} diff --git a/snippets/snippets/java/app/src/main/java/EmbedJobsGet.java b/snippets/snippets/java/app/src/main/java/EmbedJobsGet.java new file mode 100644 index 00000000..33a379fc --- /dev/null +++ b/snippets/snippets/java/app/src/main/java/EmbedJobsGet.java @@ -0,0 +1,13 @@ +import com.cohere.api.Cohere; +import com.cohere.api.types.ListEmbedJobResponse; + + +public class EmbedJobsGet { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("<>").clientName("snippet").build(); + + ListEmbedJobResponse response = cohere.embedJobs().list(); + + System.out.println(response); + } +} diff --git a/snippets/snippets/java/app/src/main/java/EmbedJobsPost.java b/snippets/snippets/java/app/src/main/java/EmbedJobsPost.java new file mode 100644 index 00000000..ff68f91b --- /dev/null +++ b/snippets/snippets/java/app/src/main/java/EmbedJobsPost.java @@ -0,0 +1,15 @@ +import com.cohere.api.Cohere; +import com.cohere.api.resources.embedjobs.requests.CreateEmbedJobRequest; +import com.cohere.api.types.CreateEmbedJobResponse; +import com.cohere.api.types.EmbedInputType; + + +public class EmbedJobsPost { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("<>").clientName("snippet").build(); + + CreateEmbedJobResponse response = cohere.embedJobs().create(CreateEmbedJobRequest.builder().model("embed-english-v3.0").datasetId("ds.id").inputType(EmbedInputType.SEARCH_DOCUMENT).build()); + + System.out.println(response); + } +} diff --git a/snippets/snippets/java/app/src/main/java/EmbedPost.java b/snippets/snippets/java/app/src/main/java/EmbedPost.java new file mode 100644 index 00000000..70e9dc39 --- /dev/null +++ b/snippets/snippets/java/app/src/main/java/EmbedPost.java @@ -0,0 +1,17 @@ +import com.cohere.api.Cohere; +import com.cohere.api.requests.EmbedRequest; +import com.cohere.api.types.EmbedInputType; +import com.cohere.api.types.EmbedResponse; + +import java.util.List; + + +public class EmbedPost { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("<>").clientName("snippet").build(); + + EmbedResponse response = cohere.embed(EmbedRequest.builder().texts(List.of("hello", "goodbye")).model("embed-english-v3.0").inputType(EmbedInputType.CLASSIFICATION).build()); + + System.out.println(response); + } +} diff --git a/snippets/snippets/java/app/src/main/java/EmebedJobsGet.java b/snippets/snippets/java/app/src/main/java/EmebedJobsGet.java new file mode 100644 index 00000000..cad0e66d --- /dev/null +++ b/snippets/snippets/java/app/src/main/java/EmebedJobsGet.java @@ -0,0 +1,13 @@ +import com.cohere.api.Cohere; +import com.cohere.api.types.EmbedJob; + + +public class EmebedJobsGet { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("<>").clientName("snippet").build(); + + EmbedJob response = cohere.embedJobs().get("job_id"); + + System.out.println(response); + } +} diff --git a/snippets/snippets/java/app/src/main/java/GeneratePost.java b/snippets/snippets/java/app/src/main/java/GeneratePost.java new file mode 100644 index 00000000..9f165e27 --- /dev/null +++ b/snippets/snippets/java/app/src/main/java/GeneratePost.java @@ -0,0 +1,14 @@ +import com.cohere.api.Cohere; +import com.cohere.api.requests.GenerateRequest; +import com.cohere.api.types.Generation; + + +public class GeneratePost { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("<>").clientName("snippet").build(); + + Generation response = cohere.generate(GenerateRequest.builder().prompt("Please explain to me how LLMs work").build()); + + System.out.println(response); + } +} diff --git a/snippets/snippets/java/app/src/main/java/ModelsListGet.java b/snippets/snippets/java/app/src/main/java/ModelsListGet.java new file mode 100644 index 00000000..3660f668 --- /dev/null +++ b/snippets/snippets/java/app/src/main/java/ModelsListGet.java @@ -0,0 +1,13 @@ +import com.cohere.api.Cohere; +import com.cohere.api.types.ListModelsResponse; + + +public class ModelsListGet { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("<>").clientName("snippet").build(); + + ListModelsResponse response = cohere.models().list(); + + System.out.println(response); + } +} diff --git a/snippets/snippets/java/app/src/main/java/RerankPost.java b/snippets/snippets/java/app/src/main/java/RerankPost.java new file mode 100644 index 00000000..49d74834 --- /dev/null +++ b/snippets/snippets/java/app/src/main/java/RerankPost.java @@ -0,0 +1,23 @@ +import com.cohere.api.Cohere; +import com.cohere.api.requests.RerankRequest; +import com.cohere.api.types.RerankRequestDocumentsItem; +import com.cohere.api.types.RerankResponse; + +import java.util.List; + + +public class RerankPost { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("<>").clientName("snippet").build(); + + RerankResponse response = cohere.rerank(RerankRequest.builder().query("What is the capital of the United States?").documents(List.of( + RerankRequestDocumentsItem.of("Carson City is the capital city of the American state of Nevada."), + RerankRequestDocumentsItem.of("The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean. Its capital is Saipan."), + RerankRequestDocumentsItem.of("Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages."), + RerankRequestDocumentsItem.of("Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district."), + RerankRequestDocumentsItem.of("Capital punishment (the death penalty) has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.") + )).model("rerank-english-v3.0").topN(3).build()); + + System.out.println(response); + } +} diff --git a/snippets/snippets/java/app/src/main/java/SummarizePost.java b/snippets/snippets/java/app/src/main/java/SummarizePost.java new file mode 100644 index 00000000..f0a411e4 --- /dev/null +++ b/snippets/snippets/java/app/src/main/java/SummarizePost.java @@ -0,0 +1,37 @@ +import com.cohere.api.Cohere; +import com.cohere.api.requests.SummarizeRequest; +import com.cohere.api.types.SummarizeResponse; + + +public class SummarizePost { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("<>").clientName("snippet").build(); + + SummarizeResponse response = cohere.summarize(SummarizeRequest.builder().text( + """ + Ice cream is a sweetened frozen food typically eaten as a snack or dessert.\s + It may be made from milk or cream and is flavoured with a sweetener,\s + either sugar or an alternative, and a spice, such as cocoa or vanilla,\s + or with fruit such as strawberries or peaches.\s + It can also be made by whisking a flavored cream base and liquid nitrogen together.\s + Food coloring is sometimes added, in addition to stabilizers.\s + The mixture is cooled below the freezing point of water and stirred to incorporate air spaces\s + and to prevent detectable ice crystals from forming. The result is a smooth,\s + semi-solid foam that is solid at very low temperatures (below 2 °C or 35 °F).\s + It becomes more malleable as its temperature increases.\\n\\n + The meaning of the name "ice cream" varies from one country to another.\s + In some countries, such as the United States, "ice cream" applies only to a specific variety,\s + and most governments regulate the commercial use of the various terms according to the\s + relative quantities of the main ingredients, notably the amount of cream.\s + Products that do not meet the criteria to be called ice cream are sometimes labelled\s + "frozen dairy dessert" instead. In other countries, such as Italy and Argentina,\s + one word is used fo\\r all variants. Analogues made from dairy alternatives,\s + such as goat's or sheep's milk, or milk substitutes\s + (e.g., soy, cashew, coconut, almond milk or tofu), are available for those who are\s + lactose intolerant, allergic to dairy protein or vegan. + """ + ).build()); + + System.out.println(response); + } +} diff --git a/snippets/snippets/java/app/src/main/java/TokenizePost.java b/snippets/snippets/java/app/src/main/java/TokenizePost.java new file mode 100644 index 00000000..981186f6 --- /dev/null +++ b/snippets/snippets/java/app/src/main/java/TokenizePost.java @@ -0,0 +1,14 @@ +import com.cohere.api.Cohere; +import com.cohere.api.requests.TokenizeRequest; +import com.cohere.api.types.TokenizeResponse; + + +public class TokenizePost { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("<>").clientName("snippet").build(); + + TokenizeResponse response = cohere.tokenize(TokenizeRequest.builder().text("tokenize me").model("command").build()); + + System.out.println(response); + } +} diff --git a/snippets/snippets/java/app/src/main/java/chatpost/Default.java b/snippets/snippets/java/app/src/main/java/chatpost/Default.java new file mode 100644 index 00000000..b687539b --- /dev/null +++ b/snippets/snippets/java/app/src/main/java/chatpost/Default.java @@ -0,0 +1,36 @@ +/* (C)2024 */ +package chatpost; + +import com.cohere.api.Cohere; +import com.cohere.api.requests.ChatRequest; +import com.cohere.api.types.ChatMessage; +import com.cohere.api.types.ChatMessageRole; +import com.cohere.api.types.NonStreamedChatResponse; +import java.util.List; + +public class Default { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("<>").clientName("snippet").build(); + + NonStreamedChatResponse response = + cohere.chat( + ChatRequest.builder() + .message("What year was he born?") + .chatHistory( + List.of( + ChatMessage.builder() + .role(ChatMessageRole.USER) + .message("Who discovered gravity?") + .build(), + ChatMessage.builder() + .role(ChatMessageRole.CHATBOT) + .message( + "The man who is widely credited" + + " with discovering gravity is" + + " Sir Isaac Newton") + .build())) + .build()); + + System.out.println(response); + } +} diff --git a/snippets/snippets/java/app/src/main/java/chatpost/Documents.java b/snippets/snippets/java/app/src/main/java/chatpost/Documents.java new file mode 100644 index 00000000..3abd4d76 --- /dev/null +++ b/snippets/snippets/java/app/src/main/java/chatpost/Documents.java @@ -0,0 +1,153 @@ +/* (C)2024 */ +package chatpost; + +import com.cohere.api.Cohere; +import com.cohere.api.requests.ChatRequest; +import com.cohere.api.types.NonStreamedChatResponse; +import java.util.List; +import java.util.Map; + +public class Documents { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("<>").clientName("snippet").build(); + + NonStreamedChatResponse response = + cohere.chat( + ChatRequest.builder() + .message("What year was he born?") + .documents( + List.of( + Map.of( + "title", + "CSPC: Backstreet Boys Popularity" + + " Analysis - ChartMasters", + "snippet", + "↓ Skip to Main Content\n\n" + + "Music industry – One step" + + " closer to being" + + " accurate\n\n" + + "CSPC: Backstreet Boys" + + " Popularity Analysis\n\n" + + "Hernán Lopez Posted on" + + " February 9, 2017 Posted in" + + " CSPC 72 Comments Tagged" + + " with Backstreet Boys, Boy" + + " band\n\n" + + "At one point, Backstreet" + + " Boys defined success:" + + " massive albums sales across" + + " the globe, great singles" + + " sales, plenty of chart" + + " topping releases, hugely" + + " hyped tours and tremendous" + + " media coverage.\n\n" + + "It is true that they" + + " benefited from" + + " extraordinarily good market" + + " conditions in all markets." + + " After all, the all-time" + + " record year for the music" + + " business, as far as" + + " revenues in billion dollars" + + " are concerned, was actually" + + " 1999. That is, back when" + + " this five men group was at" + + " its peak."), + Map.of( + "title", + "CSPC: NSYNC Popularity Analysis -" + + " ChartMasters", + "snippet", + "↓ Skip to Main Content\n\n" + + "Music industry – One step" + + " closer to being" + + " accurate\n\n" + + "CSPC: NSYNC Popularity" + + " Analysis\n\n" + + "MJD Posted on February 9," + + " 2018 Posted in CSPC 27" + + " Comments Tagged with Boy" + + " band, N'Sync\n\n" + + "At the turn of the" + + " millennium three teen acts" + + " were huge in the US, the" + + " Backstreet Boys, Britney" + + " Spears and NSYNC. The" + + " latter is the only one we" + + " haven’t study so far. It" + + " took 15 years and Adele to" + + " break their record of 2,4" + + " million units sold of No" + + " Strings Attached in its" + + " first week alone.\n\n" + + "It wasn’t a fluke, as the" + + " second fastest selling" + + " album of the Soundscan era" + + " prior 2015, was also theirs" + + " since Celebrity debuted" + + " with 1,88 million units" + + " sold."), + Map.of( + "title", + "CSPC: Backstreet Boys Popularity" + + " Analysis - ChartMasters", + "snippet", + " 1997, 1998, 2000 and 2001 also" + + " rank amongst some of the" + + " very best years.\n\n" + + "Yet the way many music" + + " consumers – especially" + + " teenagers and young women’s" + + " – embraced their output" + + " deserves its own chapter." + + " If Jonas Brothers and more" + + " recently One Direction" + + " reached a great level of" + + " popularity during the past" + + " decade, the type of success" + + " achieved by Backstreet Boys" + + " is in a completely" + + " different level as they" + + " really dominated the" + + " business for a few years" + + " all over the world," + + " including in some countries" + + " that were traditionally" + + " hard to penetrate for" + + " Western artists.\n\n" + + "We will try to analyze the" + + " extent of that hegemony" + + " with this new article with" + + " final results which will" + + " more than surprise many" + + " readers."), + Map.of( + "title", + "CSPC: NSYNC Popularity Analysis -" + + " ChartMasters", + "snippet", + " Was the teen group led by Justin" + + " Timberlake really that big? Was it" + + " only in the US where they found" + + " success? Or were they a global" + + " phenomenon?\n\n" + + "As usual, I’ll be using the" + + " Commensurate Sales to Popularity" + + " Concept in order to relevantly" + + " gauge their results. This concept" + + " will not only bring you sales" + + " information for all NSYNC‘s albums," + + " physical and download singles, as" + + " well as audio and video streaming," + + " but it will also determine their" + + " true popularity. If you are not yet" + + " familiar with the CSPC method, the" + + " next page explains it with a short" + + " video. I fully recommend watching" + + " the video before getting into the" + + " sales figures."))) + .build()); + + System.out.println(response); + } +} diff --git a/snippets/snippets/java/app/src/main/java/chatpost/Stream.java b/snippets/snippets/java/app/src/main/java/chatpost/Stream.java new file mode 100644 index 00000000..890d267a --- /dev/null +++ b/snippets/snippets/java/app/src/main/java/chatpost/Stream.java @@ -0,0 +1,47 @@ +/* (C)2024 */ +package chatpost; + +import com.cohere.api.Cohere; +import com.cohere.api.requests.ChatStreamRequest; +import com.cohere.api.types.ChatMessage; +import com.cohere.api.types.ChatMessageRole; +import com.cohere.api.types.ChatTextGenerationEvent; +import com.cohere.api.types.StreamedChatResponse; +import java.util.List; + +public class Stream { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("<>").clientName("snippet").build(); + + Iterable response = + cohere.chatStream( + ChatStreamRequest.builder() + .message("What year was he born?") + .chatHistory( + List.of( + ChatMessage.builder() + .role(ChatMessageRole.USER) + .message("Who discovered gravity?") + .build(), + ChatMessage.builder() + .role(ChatMessageRole.CHATBOT) + .message( + "The man who is widely credited" + + " with discovering gravity is" + + " Sir Isaac Newton") + .build())) + .build()); + + for (StreamedChatResponse chatResponse : response) { + if (chatResponse.isTextGeneration()) { + System.out.println( + chatResponse + .getTextGeneration() + .map(ChatTextGenerationEvent::getText) + .orElse("")); + } + } + + System.out.println(response); + } +} diff --git a/snippets/snippets/java/app/src/main/java/chatpost/Tools.java b/snippets/snippets/java/app/src/main/java/chatpost/Tools.java new file mode 100644 index 00000000..3545beaf --- /dev/null +++ b/snippets/snippets/java/app/src/main/java/chatpost/Tools.java @@ -0,0 +1,80 @@ +/* (C)2024 */ +package chatpost; + +import com.cohere.api.Cohere; +import com.cohere.api.requests.ChatRequest; +import com.cohere.api.types.NonStreamedChatResponse; +import com.cohere.api.types.Tool; +import com.cohere.api.types.ToolParameterDefinitionsValue; +import java.util.List; +import java.util.Map; + +public class Tools { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("<>").clientName("snippet").build(); + + NonStreamedChatResponse response = + cohere.chat( + ChatRequest.builder() + .message( + "Can you provide a sales summary for 29th September 2023," + + " and also give me some details about the products in" + + " the 'Electronics' category, for example their" + + " prices and stock levels?") + .tools( + List.of( + Tool.builder() + .name("query_daily_sales_report") + .description( + "Connects to a database to retrieve" + + " overall sales volumes and" + + " sales information for a" + + " given day.") + .parameterDefinitions( + Map.of( + "day", + ToolParameterDefinitionsValue + .builder() + .type("str") + .description( + "Retrieves" + + " sales" + + " data" + + " for this" + + " day," + + " formatted" + + " as YYYY-MM-DD.") + .required(true) + .build())) + .build(), + Tool.builder() + .name("query_product_catalog") + .description( + "Connects to a a product catalog" + + " with information about all" + + " the products being sold," + + " including categories," + + " prices, and stock levels.") + .parameterDefinitions( + Map.of( + "category", + ToolParameterDefinitionsValue + .builder() + .type("str") + .description( + "Retrieves" + + " product" + + " information" + + " data" + + " for all" + + " products" + + " in this" + + " category.") + .required(true) + .build())) + .build())) + .build()); + + System.out.println(response); + } +} diff --git a/snippets/snippets/java/app/src/main/java/finetuning/CreateFinetunedModel.java b/snippets/snippets/java/app/src/main/java/finetuning/CreateFinetunedModel.java new file mode 100644 index 00000000..6ab2fb5f --- /dev/null +++ b/snippets/snippets/java/app/src/main/java/finetuning/CreateFinetunedModel.java @@ -0,0 +1,16 @@ +package finetuning; + +import com.cohere.api.Cohere; +import com.cohere.api.resources.finetuning.finetuning.types.*; + +public class CreateFinetunedModel { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("<>").clientName("snippet").build(); + + CreateFinetunedModelResponse response = cohere.finetuning().createFinetunedModel(FinetunedModel.builder().name("test-finetuned-model").settings(Settings.builder().baseModel(BaseModel.builder().baseType(BaseType.BASE_TYPE_GENERATIVE).build()).datasetId("my-dataset-id").build()).build()); + + System.out.println(response); + } +} + + diff --git a/snippets/snippets/java/app/src/main/java/finetuning/DeleteFinetunedModel.java b/snippets/snippets/java/app/src/main/java/finetuning/DeleteFinetunedModel.java new file mode 100644 index 00000000..5a2ac752 --- /dev/null +++ b/snippets/snippets/java/app/src/main/java/finetuning/DeleteFinetunedModel.java @@ -0,0 +1,12 @@ +package finetuning; + +import com.cohere.api.Cohere; + + +public class DeleteFinetunedModel { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("<>").clientName("snippet").build(); + + cohere.finetuning().deleteFinetunedModel("test-id"); + } +} diff --git a/snippets/snippets/java/app/src/main/java/finetuning/GetFinetunedModel.java b/snippets/snippets/java/app/src/main/java/finetuning/GetFinetunedModel.java new file mode 100644 index 00000000..2a7a7507 --- /dev/null +++ b/snippets/snippets/java/app/src/main/java/finetuning/GetFinetunedModel.java @@ -0,0 +1,15 @@ +package finetuning; + +import com.cohere.api.Cohere; +import com.cohere.api.resources.finetuning.finetuning.types.GetFinetunedModelResponse; + +public class GetFinetunedModel { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("<>").clientName("snippet").build(); + + GetFinetunedModelResponse response = cohere.finetuning().getFinetunedModel("test-id"); + + System.out.println(response); + } +} + diff --git a/snippets/snippets/java/app/src/main/java/finetuning/ListEvents.java b/snippets/snippets/java/app/src/main/java/finetuning/ListEvents.java new file mode 100644 index 00000000..9b8f60d9 --- /dev/null +++ b/snippets/snippets/java/app/src/main/java/finetuning/ListEvents.java @@ -0,0 +1,14 @@ +package finetuning; + +import com.cohere.api.Cohere; +import com.cohere.api.resources.finetuning.finetuning.types.ListEventsResponse; + +public class ListEvents { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("<>").clientName("snippet").build(); + + ListEventsResponse response = cohere.finetuning().listEvents("test-id"); + + System.out.println(response); + } +} diff --git a/snippets/snippets/java/app/src/main/java/finetuning/ListFinetunedModels.java b/snippets/snippets/java/app/src/main/java/finetuning/ListFinetunedModels.java new file mode 100644 index 00000000..a7d3e35f --- /dev/null +++ b/snippets/snippets/java/app/src/main/java/finetuning/ListFinetunedModels.java @@ -0,0 +1,15 @@ +package finetuning; + +import com.cohere.api.Cohere; +import com.cohere.api.resources.finetuning.finetuning.types.ListFinetunedModelsResponse; + + +public class ListFinetunedModels { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("<>").clientName("snippet").build(); + + ListFinetunedModelsResponse response = cohere.finetuning().listFinetunedModels(); + + System.out.println(response); + } +} diff --git a/snippets/snippets/java/app/src/main/java/finetuning/ListTrainingStepMetrics.java b/snippets/snippets/java/app/src/main/java/finetuning/ListTrainingStepMetrics.java new file mode 100644 index 00000000..48e8e85c --- /dev/null +++ b/snippets/snippets/java/app/src/main/java/finetuning/ListTrainingStepMetrics.java @@ -0,0 +1,15 @@ +package finetuning; + +import com.cohere.api.Cohere; +import com.cohere.api.resources.finetuning.finetuning.types.ListTrainingStepMetricsResponse; + + +public class ListTrainingStepMetrics { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("<>").clientName("snippet").build(); + + ListTrainingStepMetricsResponse response = cohere.finetuning().listTrainingStepMetrics("test-id"); + + System.out.println(response); + } +} diff --git a/snippets/snippets/java/app/src/main/java/finetuning/UpdateFinetunedModel.java b/snippets/snippets/java/app/src/main/java/finetuning/UpdateFinetunedModel.java new file mode 100644 index 00000000..33f78325 --- /dev/null +++ b/snippets/snippets/java/app/src/main/java/finetuning/UpdateFinetunedModel.java @@ -0,0 +1,19 @@ +package finetuning; + +import com.cohere.api.Cohere; +import com.cohere.api.resources.finetuning.finetuning.types.BaseModel; +import com.cohere.api.resources.finetuning.finetuning.types.BaseType; +import com.cohere.api.resources.finetuning.finetuning.types.Settings; +import com.cohere.api.resources.finetuning.finetuning.types.UpdateFinetunedModelResponse; +import com.cohere.api.resources.finetuning.requests.FinetuningUpdateFinetunedModelRequest; + + +public class UpdateFinetunedModel { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("<>").clientName("snippet").build(); + + UpdateFinetunedModelResponse response = cohere.finetuning().updateFinetunedModel("test-id", FinetuningUpdateFinetunedModelRequest.builder().name("new name").settings(Settings.builder().baseModel(BaseModel.builder().baseType(BaseType.BASE_TYPE_GENERATIVE).build()).datasetId("my-dataset-id").build()).build()); + + System.out.println(response); + } +} diff --git a/snippets/snippets/java/app/src/test/java/AppTest.java b/snippets/snippets/java/app/src/test/java/AppTest.java new file mode 100644 index 00000000..30617691 --- /dev/null +++ b/snippets/snippets/java/app/src/test/java/AppTest.java @@ -0,0 +1,12 @@ +/* + * This Java source file was generated by the Gradle 'init' task. + */ + +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + +class AppTest { + @Test void pass() { + assertTrue(true); + } +} diff --git a/snippets/snippets/java/gradle/libs.versions.toml b/snippets/snippets/java/gradle/libs.versions.toml new file mode 100644 index 00000000..f0021f5e --- /dev/null +++ b/snippets/snippets/java/gradle/libs.versions.toml @@ -0,0 +1,10 @@ +# This file was generated by the Gradle 'init' task. +# https://docs.gradle.org/current/userguide/platforms.html#sub::toml-dependencies-format + +[versions] +guava = "32.1.2-jre" +junit-jupiter = "5.10.0" + +[libraries] +guava = { module = "com.google.guava:guava", version.ref = "guava" } +junit-jupiter = { module = "org.junit.jupiter:junit-jupiter", version.ref = "junit-jupiter" } diff --git a/snippets/snippets/java/gradle/wrapper/gradle-wrapper.jar b/snippets/snippets/java/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..d64cd4917707c1f8861d8cb53dd15194d4248596 GIT binary patch literal 43462 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 literal 0 HcmV?d00001 diff --git a/snippets/snippets/java/gradle/wrapper/gradle-wrapper.properties b/snippets/snippets/java/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..1af9e093 --- /dev/null +++ b/snippets/snippets/java/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/snippets/snippets/java/gradlew b/snippets/snippets/java/gradlew new file mode 100755 index 00000000..1aa94a42 --- /dev/null +++ b/snippets/snippets/java/gradlew @@ -0,0 +1,249 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/snippets/snippets/java/gradlew.bat b/snippets/snippets/java/gradlew.bat new file mode 100644 index 00000000..93e3f59f --- /dev/null +++ b/snippets/snippets/java/gradlew.bat @@ -0,0 +1,92 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/snippets/snippets/java/settings.gradle b/snippets/snippets/java/settings.gradle new file mode 100644 index 00000000..89ee35ef --- /dev/null +++ b/snippets/snippets/java/settings.gradle @@ -0,0 +1,14 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * The settings file is used to specify which projects to include in your build. + * For more detailed information on multi-project builds, please refer to https://docs.gradle.org/8.5/userguide/building_swift_projects.html in the Gradle documentation. + */ + +plugins { + // Apply the foojay-resolver plugin to allow automatic download of JDKs + id 'org.gradle.toolchains.foojay-resolver-convention' version '0.7.0' +} + +rootProject.name = 'java' +include('app') diff --git a/snippets/snippets/node/chat-post/default.ts b/snippets/snippets/node/chat-post/default.ts new file mode 100644 index 00000000..9ffe441e --- /dev/null +++ b/snippets/snippets/node/chat-post/default.ts @@ -0,0 +1,22 @@ +const { CohereClient } = require('cohere-ai'); + +const cohere = new CohereClient({ + token: '<>', +}); + +(async () => { + const response = await cohere.chat({ + chatHistory: [ + { role: 'USER', message: 'Who discovered gravity?' }, + { + role: 'CHATBOT', + message: 'The man who is widely credited with discovering gravity is Sir Isaac Newton', + }, + ], + message: 'What year was he born?', + // perform web search before answering the question. You can also use your own custom connector. + connectors: [{ id: 'web-search' }], + }); + + console.log(response); +})(); diff --git a/snippets/snippets/node/chat-post/documents.ts b/snippets/snippets/node/chat-post/documents.ts new file mode 100644 index 00000000..32674ba3 --- /dev/null +++ b/snippets/snippets/node/chat-post/documents.ts @@ -0,0 +1,35 @@ +const { CohereClient } = require('cohere-ai'); + +const cohere = new CohereClient({ + token: '<>', +}); + +(async () => { + const response = await cohere.chat({ + message: 'Who is more popular: Nsync or Backstreet Boys?', + documents: [ + { + title: 'CSPC: Backstreet Boys Popularity Analysis - ChartMasters', + snippet: + '↓ Skip to Main Content\n\nMusic industry – One step closer to being accurate\n\nCSPC: Backstreet Boys Popularity Analysis\n\nHernán Lopez Posted on February 9, 2017 Posted in CSPC 72 Comments Tagged with Backstreet Boys, Boy band\n\nAt one point, Backstreet Boys defined success: massive albums sales across the globe, great singles sales, plenty of chart topping releases, hugely hyped tours and tremendous media coverage.\n\nIt is true that they benefited from extraordinarily good market conditions in all markets. After all, the all-time record year for the music business, as far as revenues in billion dollars are concerned, was actually 1999. That is, back when this five men group was at its peak.', + }, + { + title: 'CSPC: NSYNC Popularity Analysis - ChartMasters', + snippet: + "↓ Skip to Main Content\n\nMusic industry – One step closer to being accurate\n\nCSPC: NSYNC Popularity Analysis\n\nMJD Posted on February 9, 2018 Posted in CSPC 27 Comments Tagged with Boy band, N'Sync\n\nAt the turn of the millennium three teen acts were huge in the US, the Backstreet Boys, Britney Spears and NSYNC. The latter is the only one we haven’t study so far. It took 15 years and Adele to break their record of 2,4 million units sold of No Strings Attached in its first week alone.\n\nIt wasn’t a fluke, as the second fastest selling album of the Soundscan era prior 2015, was also theirs since Celebrity debuted with 1,88 million units sold.", + }, + { + title: 'CSPC: Backstreet Boys Popularity Analysis - ChartMasters', + snippet: + ' 1997, 1998, 2000 and 2001 also rank amongst some of the very best years.\n\nYet the way many music consumers – especially teenagers and young women’s – embraced their output deserves its own chapter. If Jonas Brothers and more recently One Direction reached a great level of popularity during the past decade, the type of success achieved by Backstreet Boys is in a completely different level as they really dominated the business for a few years all over the world, including in some countries that were traditionally hard to penetrate for Western artists.\n\nWe will try to analyze the extent of that hegemony with this new article with final results which will more than surprise many readers.', + }, + { + title: 'CSPC: NSYNC Popularity Analysis - ChartMasters', + snippet: + ' Was the teen group led by Justin Timberlake really that big? Was it only in the US where they found success? Or were they a global phenomenon?\n\nAs usual, I’ll be using the Commensurate Sales to Popularity Concept in order to relevantly gauge their results. This concept will not only bring you sales information for all NSYNC‘s albums, physical and download singles, as well as audio and video streaming, but it will also determine their true popularity. If you are not yet familiar with the CSPC method, the next page explains it with a short video. I fully recommend watching the video before getting into the sales figures.', + }, + ], + }); + + console.log(response); +})(); diff --git a/snippets/snippets/node/chat-post/stream.ts b/snippets/snippets/node/chat-post/stream.ts new file mode 100644 index 00000000..19eac1a1 --- /dev/null +++ b/snippets/snippets/node/chat-post/stream.ts @@ -0,0 +1,26 @@ +const { CohereClient } = require('cohere-ai'); + +const cohere = new CohereClient({ + token: '<>', +}); + +(async () => { + const chatStream = await cohere.chatStream({ + chatHistory: [ + { role: 'USER', message: 'Who discovered gravity?' }, + { + role: 'CHATBOT', + message: 'The man who is widely credited with discovering gravity is Sir Isaac Newton', + }, + ], + message: 'What year was he born?', + // perform web search before answering the question. You can also use your own custom connector. + connectors: [{ id: 'web-search' }], + }); + + for await (const message of chatStream) { + if (message.eventType === 'text-generation') { + process.stdout.write(message); + } + } +})(); diff --git a/snippets/snippets/node/chat-post/tools.ts b/snippets/snippets/node/chat-post/tools.ts new file mode 100644 index 00000000..bc46589e --- /dev/null +++ b/snippets/snippets/node/chat-post/tools.ts @@ -0,0 +1,40 @@ +const { CohereClient } = require('cohere-ai'); + +const cohere = new CohereClient({ + token: '<>', +}); + +(async () => { + const response = await cohere.chat({ + message: + "Can you provide a sales summary for 29th September 2023, and also give me some details about the products in the 'Electronics' category, for example their prices and stock levels?", + tools: [ + { + name: 'query_daily_sales_report', + description: + 'Connects to a database to retrieve overall sales volumes and sales information for a given day.', + parameterDefinitions: { + day: { + description: 'Retrieves sales data for this day, formatted as YYYY-MM-DD.', + type: 'str', + required: true, + }, + }, + }, + { + name: 'query_product_catalog', + description: + 'Connects to a a product catalog with information about all the products being sold, including categories, prices, and stock levels.', + parameterDefinitions: { + category: { + description: 'Retrieves product information data for all products in this category.', + type: 'str', + required: true, + }, + }, + }, + ], + }); + + console.log(response); +})(); diff --git a/snippets/snippets/node/classify-post.ts b/snippets/snippets/node/classify-post.ts new file mode 100644 index 00000000..4ad3ed03 --- /dev/null +++ b/snippets/snippets/node/classify-post.ts @@ -0,0 +1,25 @@ +const { CohereClient } = require('cohere-ai'); + +const cohere = new CohereClient({ + token: '<>', +}); + +(async () => { + const classify = await cohere.classify({ + examples: [ + { text: "Dermatologists don't like her!", label: 'Spam' }, + { text: "'Hello, open to this?'", label: 'Spam' }, + { text: 'I need help please wire me $1000 right now', label: 'Spam' }, + { text: 'Nice to know you ;)', label: 'Spam' }, + { text: 'Please help me?', label: 'Spam' }, + { text: 'Your parcel will be delivered today', label: 'Not spam' }, + { text: 'Review changes to our Terms and Conditions', label: 'Not spam' }, + { text: 'Weekly sync notes', label: 'Not spam' }, + { text: "'Re: Follow up from today's meeting'", label: 'Not spam' }, + { text: 'Pre-read for tomorrow', label: 'Not spam' }, + ], + inputs: ['Confirm your email address', 'hey i need u to send some $'], + }); + + console.log(classify); +})(); diff --git a/snippets/snippets/node/connector-create.ts b/snippets/snippets/node/connector-create.ts new file mode 100644 index 00000000..7924d981 --- /dev/null +++ b/snippets/snippets/node/connector-create.ts @@ -0,0 +1,15 @@ +const { CohereClient } = require('cohere-ai'); + +const cohere = new CohereClient({ + token: '<>', +}); + +(async () => { + const connector = await cohere.connectors.create({ + name: 'test-connector', + url: 'https://example.com/search', + description: 'A test connector', + }); + + console.log(connector); +})(); diff --git a/snippets/snippets/node/connector-delete.ts b/snippets/snippets/node/connector-delete.ts new file mode 100644 index 00000000..a22471e4 --- /dev/null +++ b/snippets/snippets/node/connector-delete.ts @@ -0,0 +1,9 @@ +const { CohereClient } = require('cohere-ai'); + +const cohere = new CohereClient({ + token: '<>', +}); + +(async () => { + await cohere.connectors.delete('connector-id'); +})(); diff --git a/snippets/snippets/node/connector-get.ts b/snippets/snippets/node/connector-get.ts new file mode 100644 index 00000000..e7f53fc3 --- /dev/null +++ b/snippets/snippets/node/connector-get.ts @@ -0,0 +1,11 @@ +const { CohereClient } = require('cohere-ai'); + +const cohere = new CohereClient({ + token: '<>', +}); + +(async () => { + const connector = await cohere.connectors.get('connector-id'); + + console.log(connector); +})(); diff --git a/snippets/snippets/node/connector-patch.ts b/snippets/snippets/node/connector-patch.ts new file mode 100644 index 00000000..ed3f8f9d --- /dev/null +++ b/snippets/snippets/node/connector-patch.ts @@ -0,0 +1,14 @@ +const { CohereClient } = require('cohere-ai'); + +const cohere = new CohereClient({ + token: '<>', +}); + +(async () => { + const connector = await cohere.connectors.update(connector.id, { + name: 'test-connector-renamed', + description: 'A test connector renamed', + }); + + console.log(connector); +})(); diff --git a/snippets/snippets/node/connectors-id-oauth-authorize-post.ts b/snippets/snippets/node/connectors-id-oauth-authorize-post.ts new file mode 100644 index 00000000..cce7182a --- /dev/null +++ b/snippets/snippets/node/connectors-id-oauth-authorize-post.ts @@ -0,0 +1,13 @@ +const { CohereClient } = require('cohere-ai'); + +const cohere = new CohereClient({ + token: '<>', +}); + +(async () => { + const connector = await cohere.connectors.oAuthAuthorize('connector-id', { + redirect_uri: 'https://example.com/oauth/callback', + }); + + console.log(connector); +})(); diff --git a/snippets/snippets/node/connectors-list.ts b/snippets/snippets/node/connectors-list.ts new file mode 100644 index 00000000..9c7485fc --- /dev/null +++ b/snippets/snippets/node/connectors-list.ts @@ -0,0 +1,11 @@ +const { CohereClient } = require('cohere-ai'); + +const cohere = new CohereClient({ + token: '<>', +}); + +(async () => { + const connectors = await cohere.connectors.list(); + + console.log(connectors); +})(); diff --git a/snippets/snippets/node/dataset-get.ts b/snippets/snippets/node/dataset-get.ts new file mode 100644 index 00000000..22b60ede --- /dev/null +++ b/snippets/snippets/node/dataset-get.ts @@ -0,0 +1,11 @@ +const { CohereClient } = require('cohere-ai'); + +const cohere = new CohereClient({ + token: '<>', +}); + +(async () => { + const datasets = await cohere.datasets.get('<>'); + + console.log(datasets); +})(); diff --git a/snippets/snippets/node/dataset-post.ts b/snippets/snippets/node/dataset-post.ts new file mode 100644 index 00000000..ec52b76a --- /dev/null +++ b/snippets/snippets/node/dataset-post.ts @@ -0,0 +1,14 @@ +const { CohereClient } = require('cohere-ai'); +const fs = require('fs'); + +const cohere = new CohereClient({ + token: '<>', +}); + +(async () => { + const file = fs.createReadStream('embed_jobs_sample_data.jsonl'); // {"text": "The quick brown fox jumps over the lazy dog"} + + const dataset = await cohere.datasets.create({ name: 'my-dataset', type: 'embed-input' }, file); + + console.log(dataset); +})(); diff --git a/snippets/snippets/node/dataset-usage-get.ts b/snippets/snippets/node/dataset-usage-get.ts new file mode 100644 index 00000000..9a0d9e68 --- /dev/null +++ b/snippets/snippets/node/dataset-usage-get.ts @@ -0,0 +1,11 @@ +const { CohereClient } = require('cohere-ai'); + +const cohere = new CohereClient({ + token: '<>', +}); + +(async () => { + const usage = await cohere.datasets.getUsage('id'); + + console.log(usage); +})(); diff --git a/snippets/snippets/node/detokenize-post.ts b/snippets/snippets/node/detokenize-post.ts new file mode 100644 index 00000000..292be4a0 --- /dev/null +++ b/snippets/snippets/node/detokenize-post.ts @@ -0,0 +1,14 @@ +const { CohereClient } = require('cohere-ai'); + +const cohere = new CohereClient({ + token: '<>', +}); + +(async () => { + const detokenize = await cohere.detokenize({ + tokens: [10002, 2261, 2012, 8, 2792, 43], + model: 'command', + }); + + console.log(detokenize); +})(); diff --git a/snippets/snippets/node/embed-jobs-cancel.ts b/snippets/snippets/node/embed-jobs-cancel.ts new file mode 100644 index 00000000..549fda5c --- /dev/null +++ b/snippets/snippets/node/embed-jobs-cancel.ts @@ -0,0 +1,11 @@ +const { CohereClient } = require('cohere-ai'); + +const cohere = new CohereClient({ + token: '<>', +}); + +(async () => { + const embedJob = await cohere.embedJobs.cancel('job_id'); + + console.log(embedJob); +})(); diff --git a/snippets/snippets/node/embed-jobs-get.ts b/snippets/snippets/node/embed-jobs-get.ts new file mode 100644 index 00000000..d53caf97 --- /dev/null +++ b/snippets/snippets/node/embed-jobs-get.ts @@ -0,0 +1,11 @@ +const { CohereClient } = require('cohere-ai'); + +const cohere = new CohereClient({ + token: '<>', +}); + +(async () => { + const embedJobs = await cohere.embedJobs.list(); + + console.log(embedJobs); +})(); diff --git a/snippets/snippets/node/embed-jobs-post.ts b/snippets/snippets/node/embed-jobs-post.ts new file mode 100644 index 00000000..688165ce --- /dev/null +++ b/snippets/snippets/node/embed-jobs-post.ts @@ -0,0 +1,15 @@ +const { CohereClient } = require('cohere-ai'); + +const cohere = new CohereClient({ + token: '<>', +}); + +(async () => { + const embedJob = await cohere.embedJobs.create({ + datasetId: 'my-dataset', + inputType: 'search_document', + model: 'embed-english-v3.0', + }); + + console.log(embedJob); +})(); diff --git a/snippets/snippets/node/embed-post.ts b/snippets/snippets/node/embed-post.ts new file mode 100644 index 00000000..8cc3bdc3 --- /dev/null +++ b/snippets/snippets/node/embed-post.ts @@ -0,0 +1,14 @@ +const { CohereClient } = require('cohere-ai'); + +const cohere = new CohereClient({ + token: '<>', +}); + +(async () => { + const embed = await cohere.embed({ + texts: ['hello', 'goodbye'], + model: 'embed-english-v3.0', + inputType: 'classification', + }); + console.log(embed); +})(); diff --git a/snippets/snippets/node/emebed-jobs-get.ts b/snippets/snippets/node/emebed-jobs-get.ts new file mode 100644 index 00000000..6e7a098f --- /dev/null +++ b/snippets/snippets/node/emebed-jobs-get.ts @@ -0,0 +1,11 @@ +const { CohereClient } = require('cohere-ai'); + +const cohere = new CohereClient({ + token: '<>', +}); + +(async () => { + const embedJob = await cohere.embedJobs.get('job_id'); + + console.log(embedJob); +})(); diff --git a/snippets/snippets/node/finetuning/create-finetuned-model.ts b/snippets/snippets/node/finetuning/create-finetuned-model.ts new file mode 100644 index 00000000..51f2046e --- /dev/null +++ b/snippets/snippets/node/finetuning/create-finetuned-model.ts @@ -0,0 +1,19 @@ +const { Cohere, CohereClient } = require('cohere-ai'); + +const cohere = new CohereClient({ + token: '<>', +}); + +(async () => { + const finetunedModel = await cohere.finetuning.createFinetunedModel({ + name: 'test-finetuned-model', + settings: { + base_model: { + base_type: Cohere.Finetuning.BaseType.BaseTypeGenerative, + }, + dataset_id: 'test-dataset-id', + }, + }); + + console.log(finetunedModel); +})(); diff --git a/snippets/snippets/node/finetuning/delete-finetuned-model.ts b/snippets/snippets/node/finetuning/delete-finetuned-model.ts new file mode 100644 index 00000000..ab2196c4 --- /dev/null +++ b/snippets/snippets/node/finetuning/delete-finetuned-model.ts @@ -0,0 +1,9 @@ +const { CohereClient } = require('cohere-ai'); + +const cohere = new CohereClient({ + token: '<>', +}); + +(async () => { + await cohere.finetuning.deleteFinetunedModel('test-id'); +})(); diff --git a/snippets/snippets/node/finetuning/get-finetuned-model.ts b/snippets/snippets/node/finetuning/get-finetuned-model.ts new file mode 100644 index 00000000..145d7e99 --- /dev/null +++ b/snippets/snippets/node/finetuning/get-finetuned-model.ts @@ -0,0 +1,11 @@ +const { CohereClient } = require('cohere-ai'); + +const cohere = new CohereClient({ + token: '<>', +}); + +(async () => { + const finetunedModel = await cohere.finetuning.getFinetunedModel('test-id'); + + console.log(finetunedModel); +})(); diff --git a/snippets/snippets/node/finetuning/list-events.ts b/snippets/snippets/node/finetuning/list-events.ts new file mode 100644 index 00000000..80f67147 --- /dev/null +++ b/snippets/snippets/node/finetuning/list-events.ts @@ -0,0 +1,11 @@ +const { CohereClient } = require('cohere-ai'); + +const cohere = new CohereClient({ + token: '<>', +}); + +(async () => { + const events = await cohere.finetuning.listEvents('test-finetuned-model-id'); + + console.log(events); +})(); diff --git a/snippets/snippets/node/finetuning/list-finetuned-models.ts b/snippets/snippets/node/finetuning/list-finetuned-models.ts new file mode 100644 index 00000000..533b8691 --- /dev/null +++ b/snippets/snippets/node/finetuning/list-finetuned-models.ts @@ -0,0 +1,11 @@ +const { CohereClient } = require('cohere-ai'); + +const cohere = new CohereClient({ + token: '<>', +}); + +(async () => { + const finetunedModels = await cohere.finetuning.listFinetunedModels(); + + console.log(finetunedModels); +})(); diff --git a/snippets/snippets/node/finetuning/list-training-step-metrics.ts b/snippets/snippets/node/finetuning/list-training-step-metrics.ts new file mode 100644 index 00000000..c2f637db --- /dev/null +++ b/snippets/snippets/node/finetuning/list-training-step-metrics.ts @@ -0,0 +1,13 @@ +const { CohereClient } = require('cohere-ai'); + +const cohere = new CohereClient({ + token: '<>', +}); + +(async () => { + const trainingStepMetrics = await cohere.finetuning.listTrainingStepMetrics( + 'test-finetuned-model-id' + ); + + console.log(trainingStepMetrics); +})(); diff --git a/snippets/snippets/node/finetuning/update-finetuned-model.ts b/snippets/snippets/node/finetuning/update-finetuned-model.ts new file mode 100644 index 00000000..d11c6485 --- /dev/null +++ b/snippets/snippets/node/finetuning/update-finetuned-model.ts @@ -0,0 +1,13 @@ +const { CohereClient } = require('cohere-ai'); + +const cohere = new CohereClient({ + token: '<>', +}); + +(async () => { + const finetunedModel = await cohere.finetuning.updateFinetunedModel('test-id', { + name: 'new name', + }); + + console.log(finetunedModel); +})(); diff --git a/snippets/snippets/node/generate-post.ts b/snippets/snippets/node/generate-post.ts new file mode 100644 index 00000000..41288405 --- /dev/null +++ b/snippets/snippets/node/generate-post.ts @@ -0,0 +1,13 @@ +const { CohereClient } = require('cohere-ai'); + +const cohere = new CohereClient({ + token: '<>', +}); + +(async () => { + const generate = await cohere.generate({ + prompt: 'Please explain to me how LLMs work', + }); + + console.log(generate); +})(); diff --git a/snippets/snippets/node/models-list-get.ts b/snippets/snippets/node/models-list-get.ts new file mode 100644 index 00000000..7339b552 --- /dev/null +++ b/snippets/snippets/node/models-list-get.ts @@ -0,0 +1,11 @@ +const { CohereClient } = require('cohere-ai'); + +const cohere = new CohereClient({ + token: '<>', +}); + +(async () => { + const models = await cohere.models.list(); + + console.log(models); +})(); diff --git a/snippets/snippets/node/rerank-post.ts b/snippets/snippets/node/rerank-post.ts new file mode 100644 index 00000000..497dc675 --- /dev/null +++ b/snippets/snippets/node/rerank-post.ts @@ -0,0 +1,30 @@ +const { CohereClient } = require('cohere-ai'); + +const cohere = new CohereClient({ + token: '<>', +}); + +(async () => { + const rerank = await cohere.rerank({ + documents: [ + { text: 'Carson City is the capital city of the American state of Nevada.' }, + { + text: 'The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean. Its capital is Saipan.', + }, + { + text: 'Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages.', + }, + { + text: 'Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district.', + }, + { + text: 'Capital punishment (the death penalty) has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.', + }, + ], + query: 'What is the capital of the United States?', + topN: 3, + model: 'rerank-english-v3.0', + }); + + console.log(rerank); +})(); diff --git a/snippets/snippets/node/summarize-post.ts b/snippets/snippets/node/summarize-post.ts new file mode 100644 index 00000000..6a809b92 --- /dev/null +++ b/snippets/snippets/node/summarize-post.ts @@ -0,0 +1,33 @@ +const { CohereClient } = require('cohere-ai'); + +const cohere = new CohereClient({ + token: '<>', +}); + +(async () => { + const summarize = await cohere.summarize({ + text: + 'Ice cream is a sweetened frozen food typically eaten as a snack or dessert. ' + + 'It may be made from milk or cream and is flavoured with a sweetener, ' + + 'either sugar or an alternative, and a spice, such as cocoa or vanilla, ' + + 'or with fruit such as strawberries or peaches. ' + + 'It can also be made by whisking a flavored cream base and liquid nitrogen together. ' + + 'Food coloring is sometimes added, in addition to stabilizers. ' + + 'The mixture is cooled below the freezing point of water and stirred to incorporate air spaces ' + + 'and to prevent detectable ice crystals from forming. The result is a smooth, ' + + 'semi-solid foam that is solid at very low temperatures (below 2 °C or 35 °F). ' + + 'It becomes more malleable as its temperature increases.\n\n' + + 'The meaning of the name "ice cream" varies from one country to another. ' + + 'In some countries, such as the United States, "ice cream" applies only to a specific variety, ' + + 'and most governments regulate the commercial use of the various terms according to the ' + + 'relative quantities of the main ingredients, notably the amount of cream. ' + + 'Products that do not meet the criteria to be called ice cream are sometimes labelled ' + + '"frozen dairy dessert" instead. In other countries, such as Italy and Argentina, ' + + 'one word is used fo\r all variants. Analogues made from dairy alternatives, ' + + "such as goat's or sheep's milk, or milk substitutes " + + '(e.g., soy, cashew, coconut, almond milk or tofu), are available for those who are ' + + 'lactose intolerant, allergic to dairy protein or vegan.', + }); + + console.log(summarize); +})(); diff --git a/snippets/snippets/node/tokenize-post.ts b/snippets/snippets/node/tokenize-post.ts new file mode 100644 index 00000000..837532e9 --- /dev/null +++ b/snippets/snippets/node/tokenize-post.ts @@ -0,0 +1,8 @@ +const cohere = require('cohere-ai'); +cohere.init('<>')(async () => { + const response = await cohere.tokenize({ + text: 'tokenize me! :D', + model: 'command', // optional + }); + console.log(response); +})(); diff --git a/snippets/snippets/python-async/chat-post.py b/snippets/snippets/python-async/chat-post.py new file mode 100644 index 00000000..3981559b --- /dev/null +++ b/snippets/snippets/python-async/chat-post.py @@ -0,0 +1,21 @@ +import cohere +import asyncio + +co = cohere.AsyncClient("<>") + + +async def main(): + return await co.chat( + chat_history=[ + {"role": "USER", "message": "Who discovered gravity?"}, + { + "role": "CHATBOT", + "message": "The man who is widely credited with discovering gravity is Sir Isaac Newton", + }, + ], + message="What year was he born?", + # perform web search before answering the question. You can also use your own custom connector. + connectors=[{"id": "web-search"}], + ) + +asyncio.run(main()) diff --git a/snippets/snippets/python-async/classify-post.py b/snippets/snippets/python-async/classify-post.py new file mode 100644 index 00000000..c118a367 --- /dev/null +++ b/snippets/snippets/python-async/classify-post.py @@ -0,0 +1,36 @@ +import cohere +import asyncio +from cohere import ClassifyExample + +co = cohere.AsyncClient("<>") +examples = [ + ClassifyExample(text="Dermatologists don't like her!", label="Spam"), + ClassifyExample(text="'Hello, open to this?'", label="Spam"), + ClassifyExample( + text="I need help please wire me $1000 right now", label="Spam"), + ClassifyExample(text="Nice to know you ;)", label="Spam"), + ClassifyExample(text="Please help me?", label="Spam"), + ClassifyExample(text="Your parcel will be delivered today", + label="Not spam"), + ClassifyExample( + text="Review changes to our Terms and Conditions", label="Not spam" + ), + ClassifyExample(text="Weekly sync notes", label="Not spam"), + ClassifyExample(text="'Re: Follow up from today's meeting'", + label="Not spam"), + ClassifyExample(text="Pre-read for tomorrow", label="Not spam"), +] +inputs = [ + "Confirm your email address", + "hey i need u to send some $", +] + + +async def main(): + response = await co.classify( + inputs=inputs, + examples=examples, + ) + print(response) + +asyncio.run(main()) diff --git a/snippets/snippets/python-async/connector-create.py b/snippets/snippets/python-async/connector-create.py new file mode 100644 index 00000000..5355da39 --- /dev/null +++ b/snippets/snippets/python-async/connector-create.py @@ -0,0 +1,14 @@ +import cohere +import asyncio + +co = cohere.AsyncClient("<>") + + +async def main(): + response = await co.connectors.create( + name="Example connector", + url="https://connector-example.com/search", + ) + print(response) + +asyncio.run(main()) diff --git a/snippets/snippets/python-async/connector-delete.py b/snippets/snippets/python-async/connector-delete.py new file mode 100644 index 00000000..676bfa7b --- /dev/null +++ b/snippets/snippets/python-async/connector-delete.py @@ -0,0 +1,10 @@ +import cohere +import asyncio + +co = cohere.AsyncClient("<>") + + +async def main(): + await co.connectors.delete("test-id") + +asyncio.run(main()) diff --git a/snippets/snippets/python-async/connector-get.py b/snippets/snippets/python-async/connector-get.py new file mode 100644 index 00000000..c317a3b9 --- /dev/null +++ b/snippets/snippets/python-async/connector-get.py @@ -0,0 +1,11 @@ +import cohere +import asyncio + +co = cohere.AsyncClient("<>") + + +async def main(): + response = await co.connectors.get("test-id") + print(response) + +asyncio.run(main()) diff --git a/snippets/snippets/python-async/connector-patch.py b/snippets/snippets/python-async/connector-patch.py new file mode 100644 index 00000000..4ed5258c --- /dev/null +++ b/snippets/snippets/python-async/connector-patch.py @@ -0,0 +1,13 @@ +import cohere +import asyncio + +co = cohere.AsyncClient("<>") + + +async def main(): + response = await co.connectors.update( + connector_id="test-id", name="new name", url="https://example.com/search" + ) + print(response) + +asyncio.run(main()) diff --git a/snippets/snippets/python-async/connectors-id-oauth-authorize-post.py b/snippets/snippets/python-async/connectors-id-oauth-authorize-post.py new file mode 100644 index 00000000..1811eb7a --- /dev/null +++ b/snippets/snippets/python-async/connectors-id-oauth-authorize-post.py @@ -0,0 +1,13 @@ +import cohere +import asyncio + +co = cohere.AsyncClient("<>") + + +async def main(): + response = await co.connectors.o_auth_authorize( + connector_id="test-id", after_token_redirect="https://test.com" + ) + print(response) + +asyncio.run(main()) diff --git a/snippets/snippets/python-async/connectors-list.py b/snippets/snippets/python-async/connectors-list.py new file mode 100644 index 00000000..136958b1 --- /dev/null +++ b/snippets/snippets/python-async/connectors-list.py @@ -0,0 +1,11 @@ +import cohere +import asyncio + +co = cohere.AsyncClient("<>") + + +async def main(): + response = await co.connectors.list() + print(response) + +asyncio.run(main()) diff --git a/snippets/snippets/python-async/dataset-delete.py b/snippets/snippets/python-async/dataset-delete.py new file mode 100644 index 00000000..31a4f9b9 --- /dev/null +++ b/snippets/snippets/python-async/dataset-delete.py @@ -0,0 +1,10 @@ +import cohere +import asyncio + +co = cohere.AsyncClient("<>") + + +async def main(): + await co.delete_dataset("id") + +asyncio.run(main()) diff --git a/snippets/snippets/python-async/dataset-get.py b/snippets/snippets/python-async/dataset-get.py new file mode 100644 index 00000000..b9331f64 --- /dev/null +++ b/snippets/snippets/python-async/dataset-get.py @@ -0,0 +1,12 @@ +import cohere +import asyncio + +co = cohere.AsyncClient("<>") + + +async def main(): + response = await co.datasets.get(id="<>") + + print(response) + +asyncio.run(main()) diff --git a/snippets/snippets/python-async/dataset-post.py b/snippets/snippets/python-async/dataset-post.py new file mode 100644 index 00000000..b5dcc572 --- /dev/null +++ b/snippets/snippets/python-async/dataset-post.py @@ -0,0 +1,21 @@ +import cohere +import asyncio + +co = cohere.AsyncClient("<>") + + +async def main(): + + # upload a dataset + response = await co.datasets.create( + name="prompt-completion-dataset", + data=open("./prompt-completion.jsonl", "rb"), + type="prompt-completion-finetune-input", + ) + + # wait for validation to complete + response = await co.wait(response) + + print(response) + +asyncio.run(main()) diff --git a/snippets/snippets/python-async/dataset-usage-get.py b/snippets/snippets/python-async/dataset-usage-get.py new file mode 100644 index 00000000..0e70b886 --- /dev/null +++ b/snippets/snippets/python-async/dataset-usage-get.py @@ -0,0 +1,12 @@ +import cohere +import asyncio + +co = cohere.AsyncClient("<>") + + +async def main(): + response = await co.datasets.get_usage() + + print(response) + +asyncio.run(main()) diff --git a/snippets/snippets/python-async/detokenize-post.py b/snippets/snippets/python-async/detokenize-post.py new file mode 100644 index 00000000..0dc997c4 --- /dev/null +++ b/snippets/snippets/python-async/detokenize-post.py @@ -0,0 +1,13 @@ +import cohere +import asyncio + +co = cohere.AsyncClient("<>") + + +async def main(): + response = await co.detokenize( + tokens=[8466, 5169, 2594, 8, 2792, 43], model="command" # optional + ) + print(response) + +asyncio.run(main()) diff --git a/snippets/snippets/python-async/embed-jobs-cancel.py b/snippets/snippets/python-async/embed-jobs-cancel.py new file mode 100644 index 00000000..568a41a2 --- /dev/null +++ b/snippets/snippets/python-async/embed-jobs-cancel.py @@ -0,0 +1,8 @@ +import cohere +import asyncio + +co = cohere.AsyncClient("<>") + + +async def main(): + await co.embed_jobs.cancel("job_id") diff --git a/snippets/snippets/python-async/embed-jobs-get.py b/snippets/snippets/python-async/embed-jobs-get.py new file mode 100644 index 00000000..1e239d29 --- /dev/null +++ b/snippets/snippets/python-async/embed-jobs-get.py @@ -0,0 +1,12 @@ +import cohere +import asyncio + +co = cohere.AsyncClient("<>") + + +async def main(): + response = await co.embed_jobs.list() + + print(response) + +asyncio.run(main()) diff --git a/snippets/snippets/python-async/embed-jobs-post.py b/snippets/snippets/python-async/embed-jobs-post.py new file mode 100644 index 00000000..f49580c9 --- /dev/null +++ b/snippets/snippets/python-async/embed-jobs-post.py @@ -0,0 +1,18 @@ +import cohere +import asyncio + +co = cohere.AsyncClient("<>") + + +async def main(): + # start an embed job + response = await co.embed_jobs.create( + dataset_id=ds.id, input_type="search_document", model="embed-english-v3.0" + ) + + # poll the server until the job is complete + response = await co.wait(job) + + print(response) + +asyncio.run(main()) diff --git a/snippets/snippets/python-async/embed-post.py b/snippets/snippets/python-async/embed-post.py new file mode 100644 index 00000000..643b810e --- /dev/null +++ b/snippets/snippets/python-async/embed-post.py @@ -0,0 +1,13 @@ +import cohere +import asyncio + +co = cohere.AsyncClient("<>") + + +async def main(): + response = await co.embed( + texts=["hello", "goodbye"], model="embed-english-v3.0", input_type="classification" + ) + print(response) + +asyncio.run(main()) diff --git a/snippets/snippets/python-async/emebed-jobs-get.py b/snippets/snippets/python-async/emebed-jobs-get.py new file mode 100644 index 00000000..e5de8969 --- /dev/null +++ b/snippets/snippets/python-async/emebed-jobs-get.py @@ -0,0 +1,12 @@ +import cohere +import asyncio + +co = cohere.AsyncClient("<>") + + +async def main(): + response = await co.embed_jobs.get("job_id") + + print(response) + +asyncio.run(main()) diff --git a/snippets/snippets/python-async/finetuning/create-finetuned-model.py b/snippets/snippets/python-async/finetuning/create-finetuned-model.py new file mode 100644 index 00000000..eea9e7dd --- /dev/null +++ b/snippets/snippets/python-async/finetuning/create-finetuned-model.py @@ -0,0 +1,27 @@ +from cohere.finetuning import ( + BaseModel, + BaseType, + FinetunedModel, + Settings, +) +import cohere +import asyncio + +co = cohere.AsyncClient("<>") + + +async def main(): + response = await co.finetuning.create_finetuned_model( + request=FinetunedModel( + name="test-finetuned-model", + settings=Settings( + base_model=BaseModel( + base_type=BaseType.BASE_TYPE_GENERATIVE, + ), + dataset_id="my-dataset-id", + ), + ) + ) + print(response) + +asyncio.run(main()) diff --git a/snippets/snippets/python-async/finetuning/delete-finetuned-model.py b/snippets/snippets/python-async/finetuning/delete-finetuned-model.py new file mode 100644 index 00000000..5fecc852 --- /dev/null +++ b/snippets/snippets/python-async/finetuning/delete-finetuned-model.py @@ -0,0 +1,10 @@ +import cohere +import asyncio + +co = cohere.AsyncClient("<>") + + +async def main(): + await co.finetuning.delete_finetuned_model("test-id") + +asyncio.run(main()) diff --git a/snippets/snippets/python-async/finetuning/get-finetuned-model.py b/snippets/snippets/python-async/finetuning/get-finetuned-model.py new file mode 100644 index 00000000..6cbcfef4 --- /dev/null +++ b/snippets/snippets/python-async/finetuning/get-finetuned-model.py @@ -0,0 +1,11 @@ +import cohere +import asyncio + +co = cohere.AsyncClient("<>") + + +async def main(): + response = await co.finetuning.get_finetuned_model("test-id") + print(response) + +asyncio.run(main()) diff --git a/snippets/snippets/python-async/finetuning/list-events.py b/snippets/snippets/python-async/finetuning/list-events.py new file mode 100644 index 00000000..6a02332b --- /dev/null +++ b/snippets/snippets/python-async/finetuning/list-events.py @@ -0,0 +1,11 @@ +import cohere +import asyncio + +co = cohere.AsyncClient("<>") + + +async def main(): + response = await co.finetuning.list_events(finetuned_model_id="test-id") + print(response) + +asyncio.run(main()) diff --git a/snippets/snippets/python-async/finetuning/list-finetuned-models.py b/snippets/snippets/python-async/finetuning/list-finetuned-models.py new file mode 100644 index 00000000..6821318b --- /dev/null +++ b/snippets/snippets/python-async/finetuning/list-finetuned-models.py @@ -0,0 +1,11 @@ +import cohere +import asyncio + +co = cohere.AsyncClient("<>") + + +async def main(): + response = await co.finetuning.list_finetuned_models() + print(response) + +asyncio.run(main()) diff --git a/snippets/snippets/python-async/finetuning/list-training-step-metrics.py b/snippets/snippets/python-async/finetuning/list-training-step-metrics.py new file mode 100644 index 00000000..6006478e --- /dev/null +++ b/snippets/snippets/python-async/finetuning/list-training-step-metrics.py @@ -0,0 +1,11 @@ +import cohere +import asyncio + +co = cohere.AsyncClient("<>") + + +async def main(): + response = await co.finetuning.list_train_step_metrics(finetuned_model_id="test-id") + print(response) + +asyncio.run(main()) diff --git a/snippets/snippets/python-async/finetuning/update-finetuned-model.py b/snippets/snippets/python-async/finetuning/update-finetuned-model.py new file mode 100644 index 00000000..7caa106c --- /dev/null +++ b/snippets/snippets/python-async/finetuning/update-finetuned-model.py @@ -0,0 +1,11 @@ +import cohere +import asyncio + +co = cohere.AsyncClient("<>") + + +async def main(): + response = await co.finetuning.update_finetuned_model(id="test-id", name="new name") + print(response) + +asyncio.run(main()) diff --git a/snippets/snippets/python-async/generate-post.py b/snippets/snippets/python-async/generate-post.py new file mode 100644 index 00000000..540e93c7 --- /dev/null +++ b/snippets/snippets/python-async/generate-post.py @@ -0,0 +1,13 @@ +import cohere +import asyncio + +co = cohere.AsyncClient("<>") + + +async def main(): + response = await co.generate( + prompt="Please explain to me how LLMs work", + ) + print(response) + +asyncio.run(main()) diff --git a/snippets/snippets/python-async/models-list-get.py b/snippets/snippets/python-async/models-list-get.py new file mode 100644 index 00000000..476725f5 --- /dev/null +++ b/snippets/snippets/python-async/models-list-get.py @@ -0,0 +1,11 @@ +import cohere +import asyncio + +co = cohere.AsyncClient("<>") + + +async def main(): + response = await co.models.list() + print(response) + +asyncio.run(main()) diff --git a/snippets/snippets/python-async/rerank-post.py b/snippets/snippets/python-async/rerank-post.py new file mode 100644 index 00000000..8dcd9e0b --- /dev/null +++ b/snippets/snippets/python-async/rerank-post.py @@ -0,0 +1,24 @@ +import cohere +import asyncio + +co = cohere.AsyncClient("<>") + +docs = [ + "Carson City is the capital city of the American state of Nevada.", + "The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean. Its capital is Saipan.", + "Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages.", + "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district.", + "Capital punishment (the death penalty) has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.", +] + + +async def main(): + response = await co.rerank( + model="rerank-english-v2.0", + query="What is the capital of the United States?", + documents=docs, + top_n=3, + ) + print(response) + +asyncio.run(main()) diff --git a/snippets/snippets/python-async/summarize-post.py b/snippets/snippets/python-async/summarize-post.py new file mode 100644 index 00000000..0c0d61ae --- /dev/null +++ b/snippets/snippets/python-async/summarize-post.py @@ -0,0 +1,36 @@ +import cohere +import asyncio + +co = cohere.AsyncClient("<>") + +text = ( + "Ice cream is a sweetened frozen food typically eaten as a snack or dessert. " + "It may be made from milk or cream and is flavoured with a sweetener, " + "either sugar or an alternative, and a spice, such as cocoa or vanilla, " + "or with fruit such as strawberries or peaches. " + "It can also be made by whisking a flavored cream base and liquid nitrogen together. " + "Food coloring is sometimes added, in addition to stabilizers. " + "The mixture is cooled below the freezing point of water and stirred to incorporate air spaces " + "and to prevent detectable ice crystals from forming. The result is a smooth, " + "semi-solid foam that is solid at very low temperatures (below 2 °C or 35 °F). " + "It becomes more malleable as its temperature increases.\n\n" + 'The meaning of the name "ice cream" varies from one country to another. ' + 'In some countries, such as the United States, "ice cream" applies only to a specific variety, ' + "and most governments regulate the commercial use of the various terms according to the " + "relative quantities of the main ingredients, notably the amount of cream. " + "Products that do not meet the criteria to be called ice cream are sometimes labelled " + '"frozen dairy dessert" instead. In other countries, such as Italy and Argentina, ' + "one word is used fo\r all variants. Analogues made from dairy alternatives, " + "such as goat's or sheep's milk, or milk substitutes " + "(e.g., soy, cashew, coconut, almond milk or tofu), are available for those who are " + "lactose intolerant, allergic to dairy protein or vegan." +) + + +async def main(): + response = await co.summarize( + text=text, + ) + print(response) + +asyncio.run(main()) diff --git a/snippets/snippets/python-async/tokenize-post.py b/snippets/snippets/python-async/tokenize-post.py new file mode 100644 index 00000000..00a838ca --- /dev/null +++ b/snippets/snippets/python-async/tokenize-post.py @@ -0,0 +1,11 @@ +import cohere +import asyncio + +co = cohere.AsyncClient("<>") + + +async def main(): + response = await co.tokenize(text="tokenize me! :D", model="command") + print(response) + +asyncio.run(main()) diff --git a/snippets/snippets/python/chat-post.py b/snippets/snippets/python/chat-post.py new file mode 100644 index 00000000..caeb25c9 --- /dev/null +++ b/snippets/snippets/python/chat-post.py @@ -0,0 +1,16 @@ +import cohere + +co = cohere.Client("<>") +response = co.chat( + chat_history=[ + {"role": "USER", "message": "Who discovered gravity?"}, + { + "role": "CHATBOT", + "message": "The man who is widely credited with discovering gravity is Sir Isaac Newton", + }, + ], + message="What year was he born?", + # perform web search before answering the question. You can also use your own custom connector. + connectors=[{"id": "web-search"}], +) +print(response) diff --git a/snippets/snippets/python/chat-post/default.py b/snippets/snippets/python/chat-post/default.py new file mode 100644 index 00000000..7f0340f4 --- /dev/null +++ b/snippets/snippets/python/chat-post/default.py @@ -0,0 +1,18 @@ +import cohere + +co = cohere.Client("<>") + +response = co.chat( + chat_history=[ + {"role": "USER", "message": "Who discovered gravity?"}, + { + "role": "CHATBOT", + "message": "The man who is widely credited with discovering gravity is Sir Isaac Newton", + }, + ], + message="What year was he born?", + # perform web search before answering the question. You can also use your own custom connector. + connectors=[{"id": "web-search"}], +) + +print(response) diff --git a/snippets/snippets/python/chat-post/documents.py b/snippets/snippets/python/chat-post/documents.py new file mode 100644 index 00000000..f4c5c0ce --- /dev/null +++ b/snippets/snippets/python/chat-post/documents.py @@ -0,0 +1,27 @@ +import cohere + +co = cohere.Client("<>") + +response = co.chat( + model="command", + message="Who is more popular: Nsync or Backstreet Boys?", + documents=[ + { + "title": "CSPC: Backstreet Boys Popularity Analysis - ChartMasters", + "snippet": "↓ Skip to Main Content\n\nMusic industry – One step closer to being accurate\n\nCSPC: Backstreet Boys Popularity Analysis\n\nHernán Lopez Posted on February 9, 2017 Posted in CSPC 72 Comments Tagged with Backstreet Boys, Boy band\n\nAt one point, Backstreet Boys defined success: massive albums sales across the globe, great singles sales, plenty of chart topping releases, hugely hyped tours and tremendous media coverage.\n\nIt is true that they benefited from extraordinarily good market conditions in all markets. After all, the all-time record year for the music business, as far as revenues in billion dollars are concerned, was actually 1999. That is, back when this five men group was at its peak." + }, + { + "title": "CSPC: NSYNC Popularity Analysis - ChartMasters", + "snippet": "↓ Skip to Main Content\n\nMusic industry – One step closer to being accurate\n\nCSPC: NSYNC Popularity Analysis\n\nMJD Posted on February 9, 2018 Posted in CSPC 27 Comments Tagged with Boy band, N'Sync\n\nAt the turn of the millennium three teen acts were huge in the US, the Backstreet Boys, Britney Spears and NSYNC. The latter is the only one we haven’t study so far. It took 15 years and Adele to break their record of 2,4 million units sold of No Strings Attached in its first week alone.\n\nIt wasn’t a fluke, as the second fastest selling album of the Soundscan era prior 2015, was also theirs since Celebrity debuted with 1,88 million units sold." + }, + { + "title": "CSPC: Backstreet Boys Popularity Analysis - ChartMasters", + "snippet": " 1997, 1998, 2000 and 2001 also rank amongst some of the very best years.\n\nYet the way many music consumers – especially teenagers and young women’s – embraced their output deserves its own chapter. If Jonas Brothers and more recently One Direction reached a great level of popularity during the past decade, the type of success achieved by Backstreet Boys is in a completely different level as they really dominated the business for a few years all over the world, including in some countries that were traditionally hard to penetrate for Western artists.\n\nWe will try to analyze the extent of that hegemony with this new article with final results which will more than surprise many readers." + }, + { + "title": "CSPC: NSYNC Popularity Analysis - ChartMasters", + "snippet": " Was the teen group led by Justin Timberlake really that big? Was it only in the US where they found success? Or were they a global phenomenon?\n\nAs usual, I’ll be using the Commensurate Sales to Popularity Concept in order to relevantly gauge their results. This concept will not only bring you sales information for all NSYNC‘s albums, physical and download singles, as well as audio and video streaming, but it will also determine their true popularity. If you are not yet familiar with the CSPC method, the next page explains it with a short video. I fully recommend watching the video before getting into the sales figures." + } + ]) + +print(response) diff --git a/snippets/snippets/python/chat-post/stream.py b/snippets/snippets/python/chat-post/stream.py new file mode 100644 index 00000000..08de1802 --- /dev/null +++ b/snippets/snippets/python/chat-post/stream.py @@ -0,0 +1,20 @@ +import cohere + +co = cohere.Client("<>") + +response = co.chat_stream( + chat_history=[ + {"role": "USER", "message": "Who discovered gravity?"}, + { + "role": "CHATBOT", + "message": "The man who is widely credited with discovering gravity is Sir Isaac Newton", + }, + ], + message="What year was he born?", + # perform web search before answering the question. You can also use your own custom connector. + connectors=[{"id": "web-search"}], +) + +for event in response: + if event.event_type == "text-generation": + print(event.text, end='') diff --git a/snippets/snippets/python/chat-post/tools.py b/snippets/snippets/python/chat-post/tools.py new file mode 100644 index 00000000..c84580a6 --- /dev/null +++ b/snippets/snippets/python/chat-post/tools.py @@ -0,0 +1,40 @@ +import cohere + +co = cohere.Client("<>") + +# tool descriptions that the model has access to +tools = [ + { + "name": "query_daily_sales_report", + "description": "Connects to a database to retrieve overall sales volumes and sales information for a given day.", + "parameter_definitions": { + "day": { + "description": "Retrieves sales data for this day, formatted as YYYY-MM-DD.", + "type": "str", + "required": True + } + } + }, + { + "name": "query_product_catalog", + "description": "Connects to a a product catalog with information about all the products being sold, including categories, prices, and stock levels.", + "parameter_definitions": { + "category": { + "description": "Retrieves product information data for all products in this category.", + "type": "str", + "required": True + } + } + } +] + + +# user request +message = "Can you provide a sales summary for 29th September 2023, and also give me some details about the products in the 'Electronics' category, for example their prices and stock levels?" + +response = co.chat( + message=message, + tools=tools, +) + +print(response) diff --git a/snippets/snippets/python/classify-post.py b/snippets/snippets/python/classify-post.py new file mode 100644 index 00000000..aa238a2f --- /dev/null +++ b/snippets/snippets/python/classify-post.py @@ -0,0 +1,30 @@ +import cohere +from cohere import ClassifyExample + +co = cohere.Client("<>") +examples = [ + ClassifyExample(text="Dermatologists don't like her!", label="Spam"), + ClassifyExample(text="'Hello, open to this?'", label="Spam"), + ClassifyExample( + text="I need help please wire me $1000 right now", label="Spam"), + ClassifyExample(text="Nice to know you ;)", label="Spam"), + ClassifyExample(text="Please help me?", label="Spam"), + ClassifyExample(text="Your parcel will be delivered today", + label="Not spam"), + ClassifyExample( + text="Review changes to our Terms and Conditions", label="Not spam" + ), + ClassifyExample(text="Weekly sync notes", label="Not spam"), + ClassifyExample(text="'Re: Follow up from today's meeting'", + label="Not spam"), + ClassifyExample(text="Pre-read for tomorrow", label="Not spam"), +] +inputs = [ + "Confirm your email address", + "hey i need u to send some $", +] +response = co.classify( + inputs=inputs, + examples=examples, +) +print(response) diff --git a/snippets/snippets/python/connector-create.py b/snippets/snippets/python/connector-create.py new file mode 100644 index 00000000..14c8b346 --- /dev/null +++ b/snippets/snippets/python/connector-create.py @@ -0,0 +1,8 @@ +import cohere + +co = cohere.Client("<>") +response = co.connectors.create( + name="Example connector", + url="https://connector-example.com/search", +) +print(response) diff --git a/snippets/snippets/python/connector-delete.py b/snippets/snippets/python/connector-delete.py new file mode 100644 index 00000000..39c0fc4c --- /dev/null +++ b/snippets/snippets/python/connector-delete.py @@ -0,0 +1,4 @@ +import cohere + +co = cohere.Client("<>") +co.connectors.delete("test-id") diff --git a/snippets/snippets/python/connector-get.py b/snippets/snippets/python/connector-get.py new file mode 100644 index 00000000..cb3dc1df --- /dev/null +++ b/snippets/snippets/python/connector-get.py @@ -0,0 +1,5 @@ +import cohere + +co = cohere.Client("<>") +response = co.connectors.get("test-id") +print(response) diff --git a/snippets/snippets/python/connector-patch.py b/snippets/snippets/python/connector-patch.py new file mode 100644 index 00000000..bd7a9149 --- /dev/null +++ b/snippets/snippets/python/connector-patch.py @@ -0,0 +1,7 @@ +import cohere + +co = cohere.Client("<>") +response = co.connectors.update( + connector_id="test-id", name="new name", url="https://example.com/search" +) +print(response) diff --git a/snippets/snippets/python/connectors-id-oauth-authorize-post.py b/snippets/snippets/python/connectors-id-oauth-authorize-post.py new file mode 100644 index 00000000..e7ee448e --- /dev/null +++ b/snippets/snippets/python/connectors-id-oauth-authorize-post.py @@ -0,0 +1,7 @@ +import cohere + +co = cohere.Client("<>") +response = co.connectors.o_auth_authorize( + connector_id="test-id", after_token_redirect="https://test.com" +) +print(response) diff --git a/snippets/snippets/python/connectors-list.py b/snippets/snippets/python/connectors-list.py new file mode 100644 index 00000000..1411cff6 --- /dev/null +++ b/snippets/snippets/python/connectors-list.py @@ -0,0 +1,5 @@ +import cohere + +co = cohere.Client("<>") +response = co.connectors.list() +print(response) diff --git a/snippets/snippets/python/dataset-delete.py b/snippets/snippets/python/dataset-delete.py new file mode 100644 index 00000000..56b12470 --- /dev/null +++ b/snippets/snippets/python/dataset-delete.py @@ -0,0 +1,6 @@ +import cohere + +co = cohere.Client("<>") + +# delete dataset +co.datasets.delete("id") diff --git a/snippets/snippets/python/dataset-get.py b/snippets/snippets/python/dataset-get.py new file mode 100644 index 00000000..2ba0a5b7 --- /dev/null +++ b/snippets/snippets/python/dataset-get.py @@ -0,0 +1,8 @@ +import cohere + +co = cohere.Client("<>") + +# get dataset +response = co.datasets.get(id="<>") + +print(response) diff --git a/snippets/snippets/python/dataset-post.py b/snippets/snippets/python/dataset-post.py new file mode 100644 index 00000000..bf5d577c --- /dev/null +++ b/snippets/snippets/python/dataset-post.py @@ -0,0 +1,15 @@ +import cohere + +co = cohere.Client("<>") + +# upload a dataset +response = co.datasets.create( + name="prompt-completion-dataset", + data=open("./prompt-completion.jsonl", "rb"), + type="prompt-completion-finetune-input", +) + +# wait for validation to complete +response = co.wait(my_dataset) + +print(response) diff --git a/snippets/snippets/python/dataset-usage-get.py b/snippets/snippets/python/dataset-usage-get.py new file mode 100644 index 00000000..dfd1c826 --- /dev/null +++ b/snippets/snippets/python/dataset-usage-get.py @@ -0,0 +1,8 @@ +import cohere + +co = cohere.Client("<>") + +# get usage +response = co.datasets.get_usage() + +print(response) diff --git a/snippets/snippets/python/detokenize-post.py b/snippets/snippets/python/detokenize-post.py new file mode 100644 index 00000000..5c5d4e1f --- /dev/null +++ b/snippets/snippets/python/detokenize-post.py @@ -0,0 +1,8 @@ +import cohere + +co = cohere.Client("<>") + +response = co.detokenize( + tokens=[8466, 5169, 2594, 8, 2792, 43], model="command" # optional +) +print(response) diff --git a/snippets/snippets/python/embed-jobs-cancel.py b/snippets/snippets/python/embed-jobs-cancel.py new file mode 100644 index 00000000..bad57a30 --- /dev/null +++ b/snippets/snippets/python/embed-jobs-cancel.py @@ -0,0 +1,6 @@ +import cohere + +co = cohere.Client("<>") + +# cancel an embed job +co.embed_jobs.cancel("job_id") diff --git a/snippets/snippets/python/embed-jobs-get.py b/snippets/snippets/python/embed-jobs-get.py new file mode 100644 index 00000000..9422c181 --- /dev/null +++ b/snippets/snippets/python/embed-jobs-get.py @@ -0,0 +1,8 @@ +import cohere + +co = cohere.Client("<>") + +# list embed jobs +response = co.embed_jobs.list() + +print(response) diff --git a/snippets/snippets/python/embed-jobs-post.py b/snippets/snippets/python/embed-jobs-post.py new file mode 100644 index 00000000..13c42263 --- /dev/null +++ b/snippets/snippets/python/embed-jobs-post.py @@ -0,0 +1,13 @@ +import cohere + +co = cohere.Client("<>") + +# start an embed job +response = co.embed_jobs.create( + dataset_id=ds.id, input_type="search_document", model="embed-english-v3.0" +) + +# poll the server until the job is complete +response = co.wait(job) + +print(response) diff --git a/snippets/snippets/python/embed-post.py b/snippets/snippets/python/embed-post.py new file mode 100644 index 00000000..618659de --- /dev/null +++ b/snippets/snippets/python/embed-post.py @@ -0,0 +1,8 @@ +import cohere + +co = cohere.Client("<>") + +response = co.embed( + texts=["hello", "goodbye"], model="embed-english-v3.0", input_type="classification" +) +print(response) diff --git a/snippets/snippets/python/emebed-jobs-get.py b/snippets/snippets/python/emebed-jobs-get.py new file mode 100644 index 00000000..27616964 --- /dev/null +++ b/snippets/snippets/python/emebed-jobs-get.py @@ -0,0 +1,8 @@ +import cohere + +co = cohere.Client("<>") + +# get embed job +response = co.embed_jobs.get("job_id") + +print(response) diff --git a/snippets/snippets/python/finetuning/create-finetuned-model.py b/snippets/snippets/python/finetuning/create-finetuned-model.py new file mode 100644 index 00000000..c1ab45f9 --- /dev/null +++ b/snippets/snippets/python/finetuning/create-finetuned-model.py @@ -0,0 +1,29 @@ +from cohere.finetuning import ( + BaseModel, + FinetunedModel, + Hyperparameters, + Settings, +) +import cohere + +co = cohere.Client("<>") +hp = Hyperparameters( + early_stopping_patience=10, + early_stopping_threshold=0.001, + train_batch_size=16, + train_epoch=1, + learning_rate=0.01, +) +finetuned_model = co.finetuning.create_finetuned_model( + request=FinetunedModel( + name="test-finetuned-model", + settings=Settings( + base_model=BaseModel( + base_type="BASE_TYPE_CHAT", + ), + dataset_id="my-dataset-id", + hyperparameters=hp, + ), + ) +) +print(response) diff --git a/snippets/snippets/python/finetuning/delete-finetuned-model.py b/snippets/snippets/python/finetuning/delete-finetuned-model.py new file mode 100644 index 00000000..68674e69 --- /dev/null +++ b/snippets/snippets/python/finetuning/delete-finetuned-model.py @@ -0,0 +1,4 @@ +import cohere + +co = cohere.Client("<>") +co.finetuning.delete_finetuned_model("test-id") diff --git a/snippets/snippets/python/finetuning/get-finetuned-model.py b/snippets/snippets/python/finetuning/get-finetuned-model.py new file mode 100644 index 00000000..91b03627 --- /dev/null +++ b/snippets/snippets/python/finetuning/get-finetuned-model.py @@ -0,0 +1,5 @@ +import cohere + +co = cohere.Client("<>") +response = co.finetuning.get_finetuned_model("test-id") +print(response) diff --git a/snippets/snippets/python/finetuning/list-events.py b/snippets/snippets/python/finetuning/list-events.py new file mode 100644 index 00000000..cb6f2fcf --- /dev/null +++ b/snippets/snippets/python/finetuning/list-events.py @@ -0,0 +1,5 @@ +import cohere + +co = cohere.Client("<>") +response = co.finetuning.list_events(finetuned_model_id="test-id") +print(response) diff --git a/snippets/snippets/python/finetuning/list-finetuned-models.py b/snippets/snippets/python/finetuning/list-finetuned-models.py new file mode 100644 index 00000000..7cef0bb8 --- /dev/null +++ b/snippets/snippets/python/finetuning/list-finetuned-models.py @@ -0,0 +1,5 @@ +import cohere + +co = cohere.Client("<>") +response = co.finetuning.list_finetuned_models() +print(response) diff --git a/snippets/snippets/python/finetuning/list-training-step-metrics.py b/snippets/snippets/python/finetuning/list-training-step-metrics.py new file mode 100644 index 00000000..1d1cdd73 --- /dev/null +++ b/snippets/snippets/python/finetuning/list-training-step-metrics.py @@ -0,0 +1,6 @@ +import cohere + +co = cohere.Client("<>") +train_step_metrics = co.finetuning.list_training_step_metrics( + finetuned_model_id="test-id") +print(train_step_metrics) diff --git a/snippets/snippets/python/finetuning/update-finetuned-model.py b/snippets/snippets/python/finetuning/update-finetuned-model.py new file mode 100644 index 00000000..51b3b498 --- /dev/null +++ b/snippets/snippets/python/finetuning/update-finetuned-model.py @@ -0,0 +1,14 @@ +import cohere + +co = cohere.Client("<>") +finetuned_model = co.finetuning.update_finetuned_model( + id="test-id", + name="new name", + settings=Settings( + base_model=BaseModel( + base_type="BASE_TYPE_CHAT", + ), + dataset_id="my-dataset-id",) +) + +print(finetuned_model) diff --git a/snippets/snippets/python/generate-post.py b/snippets/snippets/python/generate-post.py new file mode 100644 index 00000000..4b1a24ec --- /dev/null +++ b/snippets/snippets/python/generate-post.py @@ -0,0 +1,8 @@ +import cohere + +co = cohere.Client("<>") + +response = co.generate( + prompt="Please explain to me how LLMs work", +) +print(response) diff --git a/snippets/snippets/python/models-list-get.py b/snippets/snippets/python/models-list-get.py new file mode 100644 index 00000000..87a111c7 --- /dev/null +++ b/snippets/snippets/python/models-list-get.py @@ -0,0 +1,5 @@ +import cohere + +co = cohere.Client("<>") +response = co.models.list() +print(response) diff --git a/snippets/snippets/python/rerank-post.py b/snippets/snippets/python/rerank-post.py new file mode 100644 index 00000000..5150cadb --- /dev/null +++ b/snippets/snippets/python/rerank-post.py @@ -0,0 +1,19 @@ +import cohere + +co = cohere.Client("<>") + +docs = [ + "Carson City is the capital city of the American state of Nevada.", + "The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean. Its capital is Saipan.", + "Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages.", + "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district.", + "Capital punishment (the death penalty) has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.", +] + +response = co.rerank( + model="rerank-english-v3.0", + query="What is the capital of the United States?", + documents=docs, + top_n=3, +) +print(response) diff --git a/snippets/snippets/python/summarize-post.py b/snippets/snippets/python/summarize-post.py new file mode 100644 index 00000000..62307460 --- /dev/null +++ b/snippets/snippets/python/summarize-post.py @@ -0,0 +1,31 @@ +import cohere + +co = cohere.Client("<>") + +text = ( + "Ice cream is a sweetened frozen food typically eaten as a snack or dessert. " + "It may be made from milk or cream and is flavoured with a sweetener, " + "either sugar or an alternative, and a spice, such as cocoa or vanilla, " + "or with fruit such as strawberries or peaches. " + "It can also be made by whisking a flavored cream base and liquid nitrogen together. " + "Food coloring is sometimes added, in addition to stabilizers. " + "The mixture is cooled below the freezing point of water and stirred to incorporate air spaces " + "and to prevent detectable ice crystals from forming. The result is a smooth, " + "semi-solid foam that is solid at very low temperatures (below 2 °C or 35 °F). " + "It becomes more malleable as its temperature increases.\n\n" + 'The meaning of the name "ice cream" varies from one country to another. ' + 'In some countries, such as the United States, "ice cream" applies only to a specific variety, ' + "and most governments regulate the commercial use of the various terms according to the " + "relative quantities of the main ingredients, notably the amount of cream. " + "Products that do not meet the criteria to be called ice cream are sometimes labelled " + '"frozen dairy dessert" instead. In other countries, such as Italy and Argentina, ' + "one word is used fo\r all variants. Analogues made from dairy alternatives, " + "such as goat's or sheep's milk, or milk substitutes " + "(e.g., soy, cashew, coconut, almond milk or tofu), are available for those who are " + "lactose intolerant, allergic to dairy protein or vegan." +) + +response = co.summarize( + text=text, +) +print(response) diff --git a/snippets/snippets/python/tokenize-post.py b/snippets/snippets/python/tokenize-post.py new file mode 100644 index 00000000..c4cd55b2 --- /dev/null +++ b/snippets/snippets/python/tokenize-post.py @@ -0,0 +1,6 @@ +import cohere + +co = cohere.Client("<>") + +response = co.tokenize(text="tokenize me! :D", model="command") # optional +print(response) diff --git a/snippets/snippets/settings.gradle b/snippets/snippets/settings.gradle new file mode 100644 index 00000000..a0444f01 --- /dev/null +++ b/snippets/snippets/settings.gradle @@ -0,0 +1,14 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * The settings file is used to specify which projects to include in your build. + * For more detailed information on multi-project builds, please refer to https://docs.gradle.org/8.5/userguide/building_swift_projects.html in the Gradle documentation. + */ + +plugins { + // Apply the foojay-resolver plugin to allow automatic download of JDKs + id 'org.gradle.toolchains.foojay-resolver-convention' version '0.7.0' +} + +rootProject.name = 'snippets' +include('app')