pinecone-plugin-assistant


Namepinecone-plugin-assistant JSON
Version 0.1.3 PyPI version JSON
download
home_pagehttps://www.pinecone.io
SummaryAssistant plugin for Pinecone SDK
upload_time2024-06-17 15:50:38
maintainerNone
docs_urlNone
authorPinecone Systems, Inc.
requires_python<4.0,>=3.8
licenseApache-2.0
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Assistant

Interact with Pinecone's Assistant APIs, e.g. create, manage, and chat with assistants (currently in beta).

## Quickstart
The following example highlights how to use an assistant to store and understand documents on a particular topic and chat with
the assistant about those documents with the ultimate goal of semantically understanding your data.

```python
from pinecone import Pinecone
from pinecone_plugins.assistant.models.chat import Message

pc = Pinecone(api_key='<<PINECONE_API_KEY>>')

# Create an assistant (in this case we'll store documents about planets)
space_assistant = pc.assistant.create_assistant(assistant_name="space")

# Upload information to your assistant
space_assistant.upload_file("./space-fun-facts.pdf")

# Once the upload succeeded, ask the assistant a question
msg = Message(content="How old is the earth?")
resp = space_assistant.chat_completions(messages=[msg])
print(resp)

# {'choices': [{'finish_reason': 'stop',
# 'index': 0,
# 'message': {'content': 'The age of the Earth is estimated to be '
#                         'about 4.54 billion years, based on '
#                         'evidence from radiometric age dating of '
#                         'meteorite material and Earth rocks, as '
#                         'well as lunar samples. This estimate has '
#                         'a margin of error of about 1%.',
#             'role': 'assistant'}}],
# 'id': 'chatcmpl-9VmkSD9s7rfP28uScLlheookaSwcB',

```

## Assistants API

### Create Assistant
To create an assistant, see the below example. This API creates a assistant with the specified name, metadata, and optional timeout settings.

```python
from pinecone import Pinecone

pc = Pinecone(api_key='<<PINECONE_API_KEY>>')
metadata = {"author": "Jane Doe", "version": "1.0"}

assistant = pc.assistant.create_assistant(
    assistant_name="example_assistant", 
    metadata=metadata, 
    timeout=30
)
```

Arguments:
- `assistant_name` The name to assign to the assistant. 
    - type: `str`
- `metadata`: A dictionary containing metadata for the assistant.
    - type: `Optional[dict[str, any]] = None`
- `timeout`: Specify the number of seconds to wait until assistant operation is completed. 
    - If None, wait indefinitely until operation completes
    - If >=0, time out after this many seconds
    - If -1, return immediately and do not wait. 
    - type: `Optional[int] = None`

Returns:
- `AssistantModel` object with the following properties:
    - `name`: Contains the name of the assistant.
    - `metadata`: Contains the provided metadata.
    - `created_at`: Contains the timestamp of when the assistant was created.
    - `updated_at`: Contains the timestamp of when the assistant was last updated.
    - `status`: Contains the status of the assistant. This is one of:
        - 'Initializing'
        - 'Ready'
        - 'Terminating'
        - 'Failed'

### Describe Assistant
The example below describes/fetches an assistant with the specified name. Will raise a 404 if no model exists with the specified name. There are two methods for this:

```python
from pinecone import Pinecone

pc = Pinecone(api_key='<<PINECONE_API_KEY>>')

assistant = pc.assistant.describe_assistant(
    assistant_name="example_assistant", 
)

# we can also do this
assistant = pc.assistant.Assistant(
    assistant_name="example_assistant", 
)
```
Arguments:
- `assistant_name`: The name of the assistant to fetch.
    - type: `str`, required

Returns:
- `AssistantModel` object with the following properties:
    - `name`: Contains the name of the assistant.
    - `metadata`: Contains the provided metadata.
    - `created_at`: Contains the timestamp of when the assistant was created.
    - `updated_at`: Contains the timestamp of when the assistant was last updated.
    - `status`: Contains the status of the assistant. This is one of:
        - 'Initializing'
        - 'Ready'
        - 'Terminating'
        - 'Failed'

### List Assistants
Lists all assistants created from the current project. Will raise a 404 if no assistant exists with the specified name.

```python
from pinecone import Pinecone

pc = Pinecone(api_key='<<PINECONE_API_KEY>>')

assistants = pc.assistant.list_assistants()
```

Returns:
- `List[AssistantModel]` objects

### Delete Assistant
Deletes a assistant with the specified name. Will raise a 404 if no assistant exists with the specified name.

```python
from pinecone import Pinecone

pc = Pinecone(api_key='<<PINECONE_API_KEY>>')

pc.assistant.delete_assistant(
    assistant_name="example_assistant", 
)
```

Arguments:
- `assistant_name`: The name of the assistant to fetch.
    - type: `str`, required

Returns:
- NoneType


## Assistants Model API 

### Upload File to Assistant
Uploads a file from the specified path to this assistant for internal processing.

```python
from pinecone import Pinecone

pc = Pinecone(api_key='<<PINECONE_API_KEY>>')

assistant = pc.assistant.Assistant(
    assistant_name="example_assistant", 
)

# upload file
resp = assistant.upload_file(
    file_path="/path/to/file.txt"
    timeout=None
)
```

Arguments:        
- `file_path`: The path to the file that needs to be uploaded.
    - type: `str`, required

- `timeout`: Specify the number of seconds to wait until file processing is done.
    - If `None`, wait indefinitely.
    - If `>= 0`, time out after this many seconds.
    - If `-1`, return immediately and do not wait.
    - type: `Optional[int] = None`

Return
- `FileModel` object with the following properties:
    - `id`: The file id of the uploaded file.
    - `name`: The name of the uploaded file.
    - `created_on`: The timestamp of when the file was created.
    - `updated_on`: The timestamp of the last update to the file.
    - `metadata`: Metadata associated with the file.
    - `status`: The status of the file.

### Describe File to Assistant
Describes a file with the specified file `id` from this assistant. Includes information on its status and metadata.

```python
from pinecone import Pinecone

pc = Pinecone(api_key='<<PINECONE_API_KEY>>')

assistant = pc.assistant.Assistant(
    assistant_name="example_assistant", 
)

# describe file
file = assistant.describe_file(file_id="070513b3-022f-4966-b583-a9b12e0290ff")
```

Arguments:
- `file_id`: The file ID of the file to be described.
    - type: `str`, required

Returns:
- `FileModel` object with the following properties:
    - `id`: The UUID of the requested file.
    - `name`: The name of the requested file.
    - `created_on`: The timestamp of when the file was created.
    - `updated_on`: The timestamp of the last update to the file.
    - `metadata`: Metadata associated with the file.
    - `status`: The status of the file.

### List Files
Lists all uploaded files in this assistant.

```python
from pinecone import Pinecone

pc = Pinecone(api_key='<<PINECONE_API_KEY>>')

assistant = pc.assistant.Assistant(
    assistant_name="example_assistant", 
)

files = assistant.list_files()
```

Arguments:
None

Returns:
- `List[FileModel]`, the list of files in the assistant 


### Delete file from assistant
Deletes a file with the specified file_id from this assistant.

```python
from pinecone import Pinecone

pc = Pinecone(api_key='<<PINECONE_API_KEY>>')

assistant = pc.assistant.Assistant(
    assistant_name="example_assistant", 
)

# delete file
assistant.delete_file(file_id="070513b3-022f-4966-b583-a9b12e0290ff")
```

Arguments:
- `file_id`: The file ID of the file to be described.
    - type: `str`, required

Returns:
- `NoneType`


### Chat Completions
Performs a chat completion request to the following assistant. If the stream bool is set to `true`, this function will stream the response in chunks by returning a generator. 


```python
from pinecone import Pinecone
from pinecone_plugins.assistant.models.chat import Message

pc = Pinecone(api_key='<<PINECONE_API_KEY>>')

space_assistant = pc.assistant.Assistant(assistant_name="space")

msg = Message(content="How old is the earth?")
resp = space_assistant.chat_completions(messages=[msg])

# The stream version
chunks = space_assistant.chat_completions(messages=[msg], stream=True)

for chunk in chunks:
    if chunk:
        print(chunk)
```

Arguments:
- `messages`: The current context for the chat request. The final element in the list represents the user query to be made from this context.
    - type: `List[Message]` where `Message` requires the following:
        - `role`: `str`, the role of the context ('user' or 'agent')
        - `content`: `str`, the content of the context

- `stream`: If this flag is turned on, then the return type is an `Iterable[StreamingChatResultModel]` where data is returned as a generator/stream.
    - type: `bool`, default `false`

Return:
- The default result is a `ChatResultModel` with the following format:
    - `choices`: A list with the following structure:
        - `finish_reason`: The reason the response finished, e.g., "stop".
        - `index`: The index of the choice in the list.
        - `message`: An object with the following properties:
            - `content`: The content of the message.
            - `role`: The role of the message sender, e.g., "assistant".
        - `logprobs`: The log probabilities (if applicable), otherwise `null`.
    - `id`: The unique identifier of the chat completion.
    - `model`: The model used for the chat completion, e.g., "gpt-3.5-turbo-0613".
    
See the example below
```json
{
    "choices": [
        {
            "finish_reason": "stop",
            "index": 0,
            "message": {
                "content": "The 2020 World Series was played in Texas at Globe Life Field in Arlington.",
                "role": "assistant"
            },
            "logprobs": null
        }
    ],
    "id": "chatcmpl-7QyqpwdfhqwajicIEznoc6Q47XAyW",
    "model": "gpt-3.5-turbo-0613"
}
```
- When `stream` is set to `true`, the response is an iterable of `StreamingChatResultModel` objects with the following properties:
    - `choices`: A list with the following structure:
        - `finish_reason`: The reason the response finished, which can be `null` while streaming.
        - `index`: The index of the choice in the list.
        - `delta`: An object with the following properties:
            - `content`: The incremental content of the message.
            - `role`: The role of the message sender, which can be empty while streaming.
        - `logprobs`: The log probabilities (if applicable), otherwise `null`.
    - `id`: The unique identifier of the chat completion.
    - `model`: The model used for the chat completion, e.g., "gpt-3.5-turbo-0613".

See the example below
```json
    {
        "choices": [
            {
                "finish_reason": null,
                "index": 0,
                "delta": {
                    "content": "The",
                    "role": ""
                },
                "logprobs": null
            }
        ],
        "id": "chatcmpl-7QyqpwdfhqwajicIEznoc6Q47XAyW",
        "model": "gpt-3.5-turbo-0613"
    }
```
            

Raw data

            {
    "_id": null,
    "home_page": "https://www.pinecone.io",
    "name": "pinecone-plugin-assistant",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.8",
    "maintainer_email": null,
    "keywords": null,
    "author": "Pinecone Systems, Inc.",
    "author_email": "support@pinecone.io",
    "download_url": "https://files.pythonhosted.org/packages/b4/e3/5a2345ee4b78f0075bd49391bacf57148d2fdc01e3aafafda4aa682987a0/pinecone_plugin_assistant-0.1.3.tar.gz",
    "platform": null,
    "description": "# Assistant\n\nInteract with Pinecone's Assistant APIs, e.g. create, manage, and chat with assistants (currently in beta).\n\n## Quickstart\nThe following example highlights how to use an assistant to store and understand documents on a particular topic and chat with\nthe assistant about those documents with the ultimate goal of semantically understanding your data.\n\n```python\nfrom pinecone import Pinecone\nfrom pinecone_plugins.assistant.models.chat import Message\n\npc = Pinecone(api_key='<<PINECONE_API_KEY>>')\n\n# Create an assistant (in this case we'll store documents about planets)\nspace_assistant = pc.assistant.create_assistant(assistant_name=\"space\")\n\n# Upload information to your assistant\nspace_assistant.upload_file(\"./space-fun-facts.pdf\")\n\n# Once the upload succeeded, ask the assistant a question\nmsg = Message(content=\"How old is the earth?\")\nresp = space_assistant.chat_completions(messages=[msg])\nprint(resp)\n\n# {'choices': [{'finish_reason': 'stop',\n# 'index': 0,\n# 'message': {'content': 'The age of the Earth is estimated to be '\n#                         'about 4.54 billion years, based on '\n#                         'evidence from radiometric age dating of '\n#                         'meteorite material and Earth rocks, as '\n#                         'well as lunar samples. This estimate has '\n#                         'a margin of error of about 1%.',\n#             'role': 'assistant'}}],\n# 'id': 'chatcmpl-9VmkSD9s7rfP28uScLlheookaSwcB',\n\n```\n\n## Assistants API\n\n### Create Assistant\nTo create an assistant, see the below example. This API creates a assistant with the specified name, metadata, and optional timeout settings.\n\n```python\nfrom pinecone import Pinecone\n\npc = Pinecone(api_key='<<PINECONE_API_KEY>>')\nmetadata = {\"author\": \"Jane Doe\", \"version\": \"1.0\"}\n\nassistant = pc.assistant.create_assistant(\n    assistant_name=\"example_assistant\", \n    metadata=metadata, \n    timeout=30\n)\n```\n\nArguments:\n- `assistant_name` The name to assign to the assistant. \n    - type: `str`\n- `metadata`: A dictionary containing metadata for the assistant.\n    - type: `Optional[dict[str, any]] = None`\n- `timeout`: Specify the number of seconds to wait until assistant operation is completed. \n    - If None, wait indefinitely until operation completes\n    - If >=0, time out after this many seconds\n    - If -1, return immediately and do not wait. \n    - type: `Optional[int] = None`\n\nReturns:\n- `AssistantModel` object with the following properties:\n    - `name`: Contains the name of the assistant.\n    - `metadata`: Contains the provided metadata.\n    - `created_at`: Contains the timestamp of when the assistant was created.\n    - `updated_at`: Contains the timestamp of when the assistant was last updated.\n    - `status`: Contains the status of the assistant. This is one of:\n        - 'Initializing'\n        - 'Ready'\n        - 'Terminating'\n        - 'Failed'\n\n### Describe Assistant\nThe example below describes/fetches an assistant with the specified name. Will raise a 404 if no model exists with the specified name. There are two methods for this:\n\n```python\nfrom pinecone import Pinecone\n\npc = Pinecone(api_key='<<PINECONE_API_KEY>>')\n\nassistant = pc.assistant.describe_assistant(\n    assistant_name=\"example_assistant\", \n)\n\n# we can also do this\nassistant = pc.assistant.Assistant(\n    assistant_name=\"example_assistant\", \n)\n```\nArguments:\n- `assistant_name`: The name of the assistant to fetch.\n    - type: `str`, required\n\nReturns:\n- `AssistantModel` object with the following properties:\n    - `name`: Contains the name of the assistant.\n    - `metadata`: Contains the provided metadata.\n    - `created_at`: Contains the timestamp of when the assistant was created.\n    - `updated_at`: Contains the timestamp of when the assistant was last updated.\n    - `status`: Contains the status of the assistant. This is one of:\n        - 'Initializing'\n        - 'Ready'\n        - 'Terminating'\n        - 'Failed'\n\n### List Assistants\nLists all assistants created from the current project. Will raise a 404 if no assistant exists with the specified name.\n\n```python\nfrom pinecone import Pinecone\n\npc = Pinecone(api_key='<<PINECONE_API_KEY>>')\n\nassistants = pc.assistant.list_assistants()\n```\n\nReturns:\n- `List[AssistantModel]` objects\n\n### Delete Assistant\nDeletes a assistant with the specified name. Will raise a 404 if no assistant exists with the specified name.\n\n```python\nfrom pinecone import Pinecone\n\npc = Pinecone(api_key='<<PINECONE_API_KEY>>')\n\npc.assistant.delete_assistant(\n    assistant_name=\"example_assistant\", \n)\n```\n\nArguments:\n- `assistant_name`: The name of the assistant to fetch.\n    - type: `str`, required\n\nReturns:\n- NoneType\n\n\n## Assistants Model API \n\n### Upload File to Assistant\nUploads a file from the specified path to this assistant for internal processing.\n\n```python\nfrom pinecone import Pinecone\n\npc = Pinecone(api_key='<<PINECONE_API_KEY>>')\n\nassistant = pc.assistant.Assistant(\n    assistant_name=\"example_assistant\", \n)\n\n# upload file\nresp = assistant.upload_file(\n    file_path=\"/path/to/file.txt\"\n    timeout=None\n)\n```\n\nArguments:        \n- `file_path`: The path to the file that needs to be uploaded.\n    - type: `str`, required\n\n- `timeout`: Specify the number of seconds to wait until file processing is done.\n    - If `None`, wait indefinitely.\n    - If `>= 0`, time out after this many seconds.\n    - If `-1`, return immediately and do not wait.\n    - type: `Optional[int] = None`\n\nReturn\n- `FileModel` object with the following properties:\n    - `id`: The file id of the uploaded file.\n    - `name`: The name of the uploaded file.\n    - `created_on`: The timestamp of when the file was created.\n    - `updated_on`: The timestamp of the last update to the file.\n    - `metadata`: Metadata associated with the file.\n    - `status`: The status of the file.\n\n### Describe File to Assistant\nDescribes a file with the specified file `id` from this assistant. Includes information on its status and metadata.\n\n```python\nfrom pinecone import Pinecone\n\npc = Pinecone(api_key='<<PINECONE_API_KEY>>')\n\nassistant = pc.assistant.Assistant(\n    assistant_name=\"example_assistant\", \n)\n\n# describe file\nfile = assistant.describe_file(file_id=\"070513b3-022f-4966-b583-a9b12e0290ff\")\n```\n\nArguments:\n- `file_id`: The file ID of the file to be described.\n    - type: `str`, required\n\nReturns:\n- `FileModel` object with the following properties:\n    - `id`: The UUID of the requested file.\n    - `name`: The name of the requested file.\n    - `created_on`: The timestamp of when the file was created.\n    - `updated_on`: The timestamp of the last update to the file.\n    - `metadata`: Metadata associated with the file.\n    - `status`: The status of the file.\n\n### List Files\nLists all uploaded files in this assistant.\n\n```python\nfrom pinecone import Pinecone\n\npc = Pinecone(api_key='<<PINECONE_API_KEY>>')\n\nassistant = pc.assistant.Assistant(\n    assistant_name=\"example_assistant\", \n)\n\nfiles = assistant.list_files()\n```\n\nArguments:\nNone\n\nReturns:\n- `List[FileModel]`, the list of files in the assistant \n\n\n### Delete file from assistant\nDeletes a file with the specified file_id from this assistant.\n\n```python\nfrom pinecone import Pinecone\n\npc = Pinecone(api_key='<<PINECONE_API_KEY>>')\n\nassistant = pc.assistant.Assistant(\n    assistant_name=\"example_assistant\", \n)\n\n# delete file\nassistant.delete_file(file_id=\"070513b3-022f-4966-b583-a9b12e0290ff\")\n```\n\nArguments:\n- `file_id`: The file ID of the file to be described.\n    - type: `str`, required\n\nReturns:\n- `NoneType`\n\n\n### Chat Completions\nPerforms a chat completion request to the following assistant. If the stream bool is set to `true`, this function will stream the response in chunks by returning a generator. \n\n\n```python\nfrom pinecone import Pinecone\nfrom pinecone_plugins.assistant.models.chat import Message\n\npc = Pinecone(api_key='<<PINECONE_API_KEY>>')\n\nspace_assistant = pc.assistant.Assistant(assistant_name=\"space\")\n\nmsg = Message(content=\"How old is the earth?\")\nresp = space_assistant.chat_completions(messages=[msg])\n\n# The stream version\nchunks = space_assistant.chat_completions(messages=[msg], stream=True)\n\nfor chunk in chunks:\n    if chunk:\n        print(chunk)\n```\n\nArguments:\n- `messages`: The current context for the chat request. The final element in the list represents the user query to be made from this context.\n    - type: `List[Message]` where `Message` requires the following:\n        - `role`: `str`, the role of the context ('user' or 'agent')\n        - `content`: `str`, the content of the context\n\n- `stream`: If this flag is turned on, then the return type is an `Iterable[StreamingChatResultModel]` where data is returned as a generator/stream.\n    - type: `bool`, default `false`\n\nReturn:\n- The default result is a `ChatResultModel` with the following format:\n    - `choices`: A list with the following structure:\n        - `finish_reason`: The reason the response finished, e.g., \"stop\".\n        - `index`: The index of the choice in the list.\n        - `message`: An object with the following properties:\n            - `content`: The content of the message.\n            - `role`: The role of the message sender, e.g., \"assistant\".\n        - `logprobs`: The log probabilities (if applicable), otherwise `null`.\n    - `id`: The unique identifier of the chat completion.\n    - `model`: The model used for the chat completion, e.g., \"gpt-3.5-turbo-0613\".\n    \nSee the example below\n```json\n{\n    \"choices\": [\n        {\n            \"finish_reason\": \"stop\",\n            \"index\": 0,\n            \"message\": {\n                \"content\": \"The 2020 World Series was played in Texas at Globe Life Field in Arlington.\",\n                \"role\": \"assistant\"\n            },\n            \"logprobs\": null\n        }\n    ],\n    \"id\": \"chatcmpl-7QyqpwdfhqwajicIEznoc6Q47XAyW\",\n    \"model\": \"gpt-3.5-turbo-0613\"\n}\n```\n- When `stream` is set to `true`, the response is an iterable of `StreamingChatResultModel` objects with the following properties:\n    - `choices`: A list with the following structure:\n        - `finish_reason`: The reason the response finished, which can be `null` while streaming.\n        - `index`: The index of the choice in the list.\n        - `delta`: An object with the following properties:\n            - `content`: The incremental content of the message.\n            - `role`: The role of the message sender, which can be empty while streaming.\n        - `logprobs`: The log probabilities (if applicable), otherwise `null`.\n    - `id`: The unique identifier of the chat completion.\n    - `model`: The model used for the chat completion, e.g., \"gpt-3.5-turbo-0613\".\n\nSee the example below\n```json\n    {\n        \"choices\": [\n            {\n                \"finish_reason\": null,\n                \"index\": 0,\n                \"delta\": {\n                    \"content\": \"The\",\n                    \"role\": \"\"\n                },\n                \"logprobs\": null\n            }\n        ],\n        \"id\": \"chatcmpl-7QyqpwdfhqwajicIEznoc6Q47XAyW\",\n        \"model\": \"gpt-3.5-turbo-0613\"\n    }\n```",
    "bugtrack_url": null,
    "license": "Apache-2.0",
    "summary": "Assistant plugin for Pinecone SDK",
    "version": "0.1.3",
    "project_urls": {
        "Documentation": "https://pinecone.io/docs",
        "Homepage": "https://www.pinecone.io"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e0072288fe6f8118710741d9aa233ad6aba1a70e97784f7dc1f67d94b39dabfe",
                "md5": "23f1be4a6c01c775314a20cfa343f5a9",
                "sha256": "228e4723015127b449f3ed276cdf20dbc702e84e5762f568debfbd3f7b1b5631"
            },
            "downloads": -1,
            "filename": "pinecone_plugin_assistant-0.1.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "23f1be4a6c01c775314a20cfa343f5a9",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.8",
            "size": 132913,
            "upload_time": "2024-06-17T15:50:37",
            "upload_time_iso_8601": "2024-06-17T15:50:37.157583Z",
            "url": "https://files.pythonhosted.org/packages/e0/07/2288fe6f8118710741d9aa233ad6aba1a70e97784f7dc1f67d94b39dabfe/pinecone_plugin_assistant-0.1.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b4e35a2345ee4b78f0075bd49391bacf57148d2fdc01e3aafafda4aa682987a0",
                "md5": "0f798f4c16402d80443cd3d997a08aec",
                "sha256": "ebad51477311627e474524132bdbf96272e7597bd5a4ea47dfed4f9262a567e7"
            },
            "downloads": -1,
            "filename": "pinecone_plugin_assistant-0.1.3.tar.gz",
            "has_sig": false,
            "md5_digest": "0f798f4c16402d80443cd3d997a08aec",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.8",
            "size": 90173,
            "upload_time": "2024-06-17T15:50:38",
            "upload_time_iso_8601": "2024-06-17T15:50:38.369798Z",
            "url": "https://files.pythonhosted.org/packages/b4/e3/5a2345ee4b78f0075bd49391bacf57148d2fdc01e3aafafda4aa682987a0/pinecone_plugin_assistant-0.1.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-06-17 15:50:38",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "pinecone-plugin-assistant"
}
        
Elapsed time: 0.26716s