forked from Archives/langchain
117 lines
2.8 KiB
Plaintext
117 lines
2.8 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "a37d9694",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Custom Prompt Template\n",
|
|
"\n",
|
|
"This notebook goes over how to create a custom prompt template, in case you want to create your own methodology for creating prompts.\n",
|
|
"\n",
|
|
"The only two requirements for all prompt templates are:\n",
|
|
"\n",
|
|
"1. They have a `input_variables` attribute that exposes what input variables this prompt template expects.\n",
|
|
"2. They expose a `format` method which takes in keyword arguments corresponding to the expected `input_variables` and returns the formatted prompt.\n",
|
|
"\n",
|
|
"Let's imagine that we want to create a prompt template that takes in input variables and formats them into the template AFTER capitalizing them. "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"id": "26f796e5",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from langchain.prompts import BasePromptTemplate\n",
|
|
"from pydantic import BaseModel"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"id": "27919e96",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"class CustomPromptTemplate(BasePromptTemplate, BaseModel):\n",
|
|
" template: str\n",
|
|
" \n",
|
|
" def format(self, **kwargs) -> str:\n",
|
|
" capitalized_kwargs = {k: v.upper() for k, v in kwargs.items()}\n",
|
|
" return self.template.format(**capitalized_kwargs)\n",
|
|
" "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "76d1d84d",
|
|
"metadata": {},
|
|
"source": [
|
|
"We can now see that when we use this, the input variables get formatted."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"id": "eed1ff28",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"prompt = CustomPromptTemplate(input_variables=[\"foo\"], template=\"Capitalized: {foo}\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"id": "94892a3c",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"'Capitalized: LOWERCASE'"
|
|
]
|
|
},
|
|
"execution_count": 9,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"prompt.format(foo=\"lowercase\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "d3d9a7c7",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"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.7.6"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|