Skip to main content
Pinecone Docs

Search documentation

Type to search this documentation.

On this pageOverview

Pinecone Assistant: SDK quickstart

Quickstart for Pinecone Assistant using the Python or Node.js SDK to create an assistant, upload documents, and chat with your data via RAG.

Use a Pinecone SDK to create an assistant, upload documents, and chat with the assistant.

The Pinecone Python SDK and Node.js SDK provide convenient programmatic access to the Assistant API.

Python
pip install pinecone
pip install pinecone-plugin-assistant
JavaScript
npm install @pinecone-database/pinecone

You need an API key to make calls to your assistant.

Create a new API key in the Pinecone console, or use the widget below to generate a key. If you don't have a Pinecone account, the widget will sign you up for the free Starter plan.

Your generated API key:

Shell
"{{YOUR_API_KEY}}"

Create an assistant, as in the following example:

Python
from pinecone import Pinecone

pc = Pinecone(api_key="{{YOUR_API_KEY}}")

assistant = pc.assistant.create_assistant(
    assistant_name="example-assistant", 
    instructions="Use American English for spelling and grammar.", # Description or directive for the assistant to apply to all responses.
    region="us", # Region to deploy assistant. Options: "us" (default) or "eu".
    timeout=30 # Maximum seconds to wait for assistant status to become "Ready" before timing out.
)
JavaScript
import { Pinecone } from '@pinecone-database/pinecone'

const pc = new Pinecone({ apiKey: "{{YOUR_API_KEY}}" });

const assistant = await pc.createAssistant({
  name: 'example-assistant',
  instructions: 'Use American English for spelling and grammar.', // Description or directive for the assistant to apply to all responses.
  region: 'us'
});

With Pinecone Assistant, you can upload documents, ask questions, and receive responses that reference your documents. This is known as retrieval-augmented generation (RAG).

For this quickstart, download a sample 10-k filing file to your local device.

Next, upload the file to your assistant:

Python
# Get the assistant.
assistant = pc.assistant.Assistant(
    assistant_name="example-assistant", 
)

# Upload a file.
response = assistant.upload_file(
    file_path="/path/to/file/Netflix-10-K-01262024.pdf",
    metadata={"company": "netflix", "document_type": "form 10k"},
    timeout=None
)
JavaScript
const assistantName = 'example-assistant';
const assistant = pc.Assistant(assistantName);

await assistant.uploadFile({
  path: '/Users/jdoe/Downloads/example_file.txt'
});

With the sample file uploaded, you can now chat with the assistant. Ask the assistant questions about your document. It returns either a JSON object or a text stream.

The following example requests a default response to the message, "Who is the CFO of Netflix?":

Python
from pinecone_plugins.assistant.models.chat import Message

msg = Message(role="user", content="Who is the CFO of Netflix?")
resp = assistant.chat(messages=[msg])

print(resp)
JavaScript
const chatResp = await assistant.chat({
  messages: [{ role: 'user', content: 'Who is the CFO of Netflix?' }],
  model: 'gpt-4o'
});

console.log(chatResp);

The example above returns a response like the following:

{
    'id': '0000000000000000163008a05b317b7b', 
    'model': 'gpt-4o-2024-05-13', 
    'usage': {
        'prompt_tokens': 9259, 
        'completion_tokens': 30, 
        'total_tokens': 9289
        }, 
        'message': {
            'content': 'The Chief Financial Officer (CFO) of Netflix is Spencer Neumann.', 
            'role': '"assistant"'
            }, 
            'finish_reason': 'stop', 
            'citations': [
                {
                    'position': 63, 
                    'references': [
                        {
                            'pages': [78, 72, 79], 
                            'file': {
                                'name': 'Netflix-10-K-01262024.pdf', 
                                'id': '76a11dd1...', 
                                'metadata': {
                                    'company': 'netflix', 
                                    'document_type': 'form 10k'
                                    }, 
                                    'created_on': '2024-12-06T01:29:07.369208590Z', 
                                    'updated_on': '2024-12-06T01:29:50.923493799Z', 
                                    'status': 'Available', 
                                    'signed_url': 'https://storage.googleapis.com/...',
                                    'size': 1073470.0
                                }
                            }
                        ]
                    }
                ]
            }

When you no longer need the example-assistant, delete the assistant:

Python
pc.assistant.delete_assistant(
    assistant_name="example-assistant", 
)
JavaScript
await pc.deleteAssistant('example-assistant');
Suggest an edit

Propose a replacement for this page. The site team reviews it before applying any changes.

Export
Documentation menu