{
  "hash": "7cc57ec9fa4d2f05cddc2660a2568d55",
  "result": {
    "markdown": "---\ntitle: \"Auxiliary tools\"\nauthor: \"Cody Peterson\"\ndate: \"2023-10-16\"\ncategories:\n    - \"LLMs and data\"\n---\n\n## Introduction\n\nAs a product manager, I don't spend most of my time managing products. I suspect most data developers (analysts, engineers, scientists, etc.) don't spend most of their time writing data code. There are many auxiliary tasks that are required in doing many technical jobs. These include:\n\n- searching the Internet for information\n- reading, summarizing, and synthesizing information\n- performing boring computer tasks\n- translating between different languages (e.g. SQL and Python; English and Spanish)\n- copying and modifying existing code\n- querying some basic informatin from data platforms\n\nWhat if we could, through natural language, have a bot perform many of these tasks (in addition to basic data analysis) on our behalf?\n\n## We're using Python, let's use Python\n\nWe're already using Python for Ibis and Marvin. Let's use it for auxillary tools. We'll setup our data and AI platform connections and some simple example data to work with.\n\n::: {#c9d5a817 .cell execution_count=1}\n``` {.python .cell-code code-fold=\"true\"}\nimport ibis  # <1>\nimport marvin  # <1>\n\nfrom dotenv import load_dotenv  # <1>\n\nload_dotenv()  # <2>\n\ncon = ibis.connect(\"duckdb://penguins.ddb\")  # <3>\nt = ibis.examples.penguins.fetch()  # <3>\nt = con.create_table(\"penguins\", t.to_pyarrow(), overwrite=True)  # <3>\n```\n:::\n\n\n1. Import the libraries we need.\n2. Load the environment variable to setup Marvin to call our OpenAI account.\n3. Setup the demo datain an Ibis backend.\n\n::: {#22b11433 .cell execution_count=2}\n``` {.python .cell-code}\nimport ibis  # <1>\nimport marvin  # <1>\n\nfrom ibis.expr.schema import Schema  # <1>\nfrom ibis.expr.types.relations import Table  # <1>\n\nibis.options.interactive = True  # <2>\nmarvin.settings.llm_model = \"openai/gpt-4\"  # <2>\n\ncon = ibis.connect(\"duckdb://penguins.ddb\")  # <3>\nt = con.table(\"penguins\")  # <3>\n```\n:::\n\n\n1. Import Ibis and Marvin.\n2. Configure Ibis (interactive) and Marvin (GPT-4).\n3. Connect to the data and load a table into a variable.\n\n## Filesystem tools\n\n## Internet tools\n\n## AI-powered tools\n\n## Introducing Ibis Birdbrain\n\nIntroduce the bot. Need to overview the tools here I think, but should probably skip most details.\n\n## A comparison with MLOps\n\nTODO: point on how most of the work is not ML\n\nBefore \"MLOps\" was a standard term, the [Sculley et al paper](https://proceedings.neurips.cc/paper_files/paper/2015/file/86df7dcfd896fcaf2674f757a2463eba-Paper.pdf) from 2015 described the key issues with building real-world ML systems.\n\n![Figure 1: Only a small fraction of real-world ML systems is composed of the ML code, as shown by the small black box in the middle. The required surround infrastructure is vast and complex.](images/figure1.png)\n\nYou can substitute \"LLM\" for \"ML\" in the above figure.\n\n### The \"toy problem\" problem\n\nML and LLMs are cool! They're fun to play with and it's easy to get distracted with fun applications. Often, ML is learned through solving toy problems, and ...\n\n### The application landscape is vast\n\n...and thus requires modular, interoperable, customizable, and extensible tools. TODO: more comparison to MLOps.\n\n## Next steps\n\nYou can get involved with [Ibis\nBirdbrain](https://github.com/ibis-project/ibis-birdbrain), our open-source data\n& AI project for building next-generation natural language interfaces to data.\n\n",
    "supporting": [
      "index_files"
    ],
    "filters": [],
    "includes": {}
  }
}