{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "983yjns496tx" }, "source": [ "# Working with Deepseek in Pixeltable\n", "\n", "Pixeltable's Deepseek integration enables you to access Deepseek's LLM via the Deepseek API.\n", "\n", "### Prerequisites\n", "\n", "- A Deepseek account with an API key (https://api-docs.deepseek.com/)\n", "\n", "### Important notes\n", "\n", "- Deepseek usage may incur costs based on your Deepseek plan.\n", "- Be mindful of sensitive data and consider security measures when integrating with external services.\n", "\n", "First you'll need to install the required libraries and enter a Deepseek API key. Deepseek uses the OpenAI SDK as its Python API, so we need to install it in addition to Pixeltable." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "9pckrD01ik-e", "outputId": "060b8b32-48a6-48a0-e720-4eacf94d83ef" }, "outputs": [], "source": [ "%pip install -qU pixeltable openai" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "AQ6_Py7_7d0r", "outputId": "f82cfe36-be9e-4d43-f13e-9f6f5b680e8e" }, "outputs": [], "source": [ "import getpass\n", "import os\n", "\n", "if 'DEEPSEEK_API_KEY' not in os.environ:\n", " os.environ['DEEPSEEK_API_KEY'] = getpass.getpass('Deepseek API Key:')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's create a Pixeltable directory to hold the tables for our demo." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "brtjK-88tTSS", "outputId": "55d08c91-438a-4c3e-c217-3cea72faca11" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Connected to Pixeltable database at: postgresql+psycopg://postgres:@/pixeltable?host=/Users/asiegel/.pixeltable/pgdata\n", "Created directory 'deepseek_demo'.\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pixeltable as pxt\n", "\n", "# Remove the 'deepseek_demo' directory and its contents, if it exists\n", "pxt.drop_dir('deepseek_demo', force=True)\n", "pxt.create_dir('deepseek_demo')" ] }, { "cell_type": "markdown", "metadata": { "id": "0kmjJoDq9Oqe" }, "source": [ "## Messages\n", "\n", "Create a Table: In Pixeltable, create a table with columns to represent your input data and the columns where you want to store the results from Deepseek." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "5ti10tXu5m3X", "outputId": "30848066-1e9b-4efd-aad7-b2271a031ec3" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Created table 'chat'.\n", "Added 0 column values with 0 errors in 0.01 s\n" ] }, { "data": { "text/plain": [ "No rows affected." ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from pixeltable.functions import deepseek\n", "\n", "# Create a table in Pixeltable and add a computed column that calls Deepseek\n", "\n", "t = pxt.create_table('deepseek_demo/chat', {'input': pxt.String})\n", "\n", "msgs = [{'role': 'user', 'content': t.input}]\n", "t.add_computed_column(\n", " output=deepseek.chat_completions(messages=msgs, model='deepseek-chat')\n", ")" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "mePjoku95iUn", "outputId": "07c3f8f0-5301-44ba-ba33-25d10c3c26fa" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Added 0 column values with 0 errors in 0.01 s\n" ] }, { "data": { "text/plain": [ "No rows affected." ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Parse the response into a new column\n", "t.add_computed_column(response=t.output.choices[0].message.content)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 599 }, "id": "IkMM7OYb5rQ_", "outputId": "8e94af3e-485c-49f2-d7ba-b5490ec83af9" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Inserted 1 row with 0 errors in 18.72 s (0.05 rows/s)\n" ] }, { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
inputresponse
What was the outcome of the 1904 US Presidential election?The **1904 U.S. presidential election** resulted in a decisive victory for the **incumbent Republican President Theodore Roosevelt**, who was seeking a full term in his own right after succeeding the assassinated William McKinley in 1901.\n", "\n", "Here are the key details of the outcome:\n", "\n", "---\n", "\n", "### **Results at a Glance**\n", "- **Winner:** **Theodore Roosevelt** (Republican)\n", "- **Opponent:** **Alton B. Parker** (Democrat)\n", "- **Electoral Vote:** \n", " - Roosevelt: **336** electoral votes \n", " - Parker: **140** ...... t by supporting William Howard Taft’s candidacy (though he later ran again in 1912 with the Bull Moose Party).\n", "- The election solidified Roosevelt’s control of the Republican Party and marked the continued dominance of Republicans in national politics (they had won every presidential election since 1896 except 1912).\n", "\n", "In short, the 1904 election was a **major personal triumph for Theodore Roosevelt**, affirming his progressive leadership and giving him a powerful mandate for his second term.
" ], "text/plain": [ " input \\\n", "0 What was the outcome of the 1904 US Presidenti... \n", "\n", " response \n", "0 The **1904 U.S. presidential election** result... " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Start a conversation\n", "t.insert(\n", " [\n", " {\n", " 'input': 'What was the outcome of the 1904 US Presidential election?'\n", " }\n", " ]\n", ")\n", "t.select(t.input, t.response).show()" ] }, { "cell_type": "markdown", "metadata": { "id": "lTtQcjKQAlis" }, "source": [ "### Learn more\n", "\n", "To learn more about advanced techniques like RAG operations in Pixeltable, check out the [RAG Operations in Pixeltable](https://docs.pixeltable.com/howto/use-cases/rag-operations) tutorial.\n", "\n", "If you have any questions, don't hesitate to reach out." ] } ], "metadata": { "colab": { "provenance": [] }, "kernelspec": { "display_name": "pxt", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.19" } }, "nbformat": 4, "nbformat_minor": 4 }