{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "### Minimal DSPy example with Ollama LLM" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import dspy\n", "\n", "dspy.settings.configure(lm=dspy.OllamaLocal(model='mistral-nemo'))\n", "\n", "class BasicQA(dspy.Signature):\n", " \"\"\"Answer questions with short factoid answers.\"\"\"\n", " question = dspy.InputField()\n", " answer = dspy.OutputField(desc=\"a markdown formatted table containing two columns: question and answer\")" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "| Question | Answer |\n", "| --- | --- |\n", "| What is the secret of life? | \"42\", according to The Hitchhiker's Guide to the Galaxy by Douglas Adams. |\n", "\n", "---\n" ] } ], "source": [ "# -- Example 1 -- a minimal example\n", "generate_answer = dspy.Predict(BasicQA)\n", "answer = generate_answer(question=\"What is the secret of life?\").answer\n", "print(answer)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Prediction(\n", " rationale='**Answer:**\\n\\n| Question | Answer |\\n| --- | --- |\\n| What is the secret of life? | \"42\", according to The Hitchhiker\\'s Guide to the Galaxy. |\\n\\n**Explanation:** This answer is a reference to the book and film series, where the supercomputer Deep Thought gives the ultimate answer to life, the universe, and everything as 42.',\n", " answer='| Question | Answer |\\n| --- | --- |\\n| What is the secret of life? | \"42\" |'\n", ")\n" ] } ], "source": [ "# -- Example 2 -- a chain of thought object\n", "chain_of_thought = dspy.ChainOfThought(BasicQA)\n", "cot_answer = chain_of_thought(question=\"What is the secret of life?\")\n", "print(cot_answer)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "rationale **Answer:**\n", "\n", "| Question | Answer |\n", "| --- | --- |\n", "| What is the secret of life? | \"42\", according to The Hitchhiker's Guide to the Galaxy. |\n", "\n", "**Explanation:** This answer is a reference to the book and film series, where the supercomputer Deep Thought gives the ultimate answer to life, the universe, and everything as 42.\n", "answer | Question | Answer |\n", "| --- | --- |\n", "| What is the secret of life? | \"42\" |\n" ] } ], "source": [ "for k in cot_answer.keys(): print(k, cot_answer[k])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "<hr>\n", "\n", "## Pretty print the answers" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/markdown": [ "| Question | Answer |\n", "| --- | --- |\n", "| What is the secret of life? | \"42\", according to The Hitchhiker's Guide to the Galaxy by Douglas Adams. |\n", "\n", "---" ], "text/plain": [ "<IPython.core.display.Markdown object>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from IPython.display import Markdown, display\n", "display(Markdown(answer))" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/markdown": [ "### rationale" ], "text/plain": [ "<IPython.core.display.Markdown object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "**Answer:**\n", "\n", "| Question | Answer |\n", "| --- | --- |\n", "| What is the secret of life? | \"42\", according to The Hitchhiker's Guide to the Galaxy. |\n", "\n", "**Explanation:** This answer is a reference to the book and film series, where the supercomputer Deep Thought gives the ultimate answer to life, the universe, and everything as 42." ], "text/plain": [ "<IPython.core.display.Markdown object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "### answer" ], "text/plain": [ "<IPython.core.display.Markdown object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "| Question | Answer |\n", "| --- | --- |\n", "| What is the secret of life? | \"42\" |" ], "text/plain": [ "<IPython.core.display.Markdown object>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for k in cot_answer.keys(): \n", " display(Markdown(f\"### {k}\"))\n", " display(Markdown(cot_answer[k]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "<hr>\n", "\n", "> https://github.com/stanfordnlp/dspy" ] } ], "metadata": { "kernelspec": { "display_name": ".env", "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.9.6" } }, "nbformat": 4, "nbformat_minor": 2 }