2022-12-13 15:50:46 +00:00
{
"cells": [
{
"cell_type": "markdown",
2022-12-14 16:25:37 +00:00
"id": "20ac6b98",
2022-12-13 15:50:46 +00:00
"metadata": {},
"source": [
"# LLM Functionality\n",
"\n",
"This notebook goes over all the different features of the LLM class in LangChain.\n",
"\n",
"We will work with an OpenAI LLM wrapper, although these functionalities should exist for all LLM types."
]
},
{
"cell_type": "code",
"execution_count": 1,
2022-12-14 16:25:37 +00:00
"id": "df924055",
2022-12-13 15:50:46 +00:00
"metadata": {},
"outputs": [],
"source": [
"from langchain.llms import OpenAI"
]
},
{
"cell_type": "code",
"execution_count": 2,
2022-12-14 16:25:37 +00:00
"id": "182b484c",
2022-12-13 15:50:46 +00:00
"metadata": {},
"outputs": [],
"source": [
"llm = OpenAI(model_name=\"text-ada-001\", n=2, best_of=2)"
]
},
{
"cell_type": "markdown",
2022-12-14 16:25:37 +00:00
"id": "9695ccfc",
2022-12-13 15:50:46 +00:00
"metadata": {},
"source": [
"**Generate Text:** The most basic functionality an LLM has is just the ability to call it, passing in a string and getting back a string."
]
},
{
"cell_type": "code",
"execution_count": 3,
2022-12-14 16:25:37 +00:00
"id": "9d12ac26",
2022-12-13 15:50:46 +00:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
2022-12-16 06:35:42 +00:00
"'\\n\\nWhy did the chicken cross the road?\\n\\nTo get to the other side!'"
2022-12-13 15:50:46 +00:00
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"llm(\"Tell me a joke\")"
]
},
{
"cell_type": "markdown",
2022-12-14 16:25:37 +00:00
"id": "e7d4d42d",
2022-12-13 15:50:46 +00:00
"metadata": {},
"source": [
"**Generate:** More broadly, you can call it with a list of inputs, getting back a more complete response than just the text. This complete response includes things like multiple top responses, as well as LLM provider specific information"
]
},
{
"cell_type": "code",
"execution_count": 4,
2022-12-14 16:25:37 +00:00
"id": "f4dc241a",
2022-12-13 15:50:46 +00:00
"metadata": {},
"outputs": [],
"source": [
2022-12-14 16:25:37 +00:00
"llm_result = llm.generate([\"Tell me a joke\", \"Tell me a poem\"]*15)"
2022-12-13 15:50:46 +00:00
]
},
{
"cell_type": "code",
2022-12-15 15:53:32 +00:00
"execution_count": 5,
2022-12-14 16:25:37 +00:00
"id": "740392f6",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"30"
]
},
2022-12-15 15:53:32 +00:00
"execution_count": 5,
2022-12-14 16:25:37 +00:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(llm_result.generations)"
]
},
{
"cell_type": "code",
2022-12-15 15:53:32 +00:00
"execution_count": 6,
2022-12-14 16:25:37 +00:00
"id": "ab6cdcf1",
2022-12-13 15:50:46 +00:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
2022-12-15 15:53:32 +00:00
"[Generation(text='\\n\\nWhy did the chicken cross the road?\\n\\nTo get to the other side.'),\n",
2022-12-16 06:35:42 +00:00
" Generation(text='\\n\\nWhy did the chicken cross the road?\\n\\nTo get to the other side!')]"
2022-12-13 15:50:46 +00:00
]
},
2022-12-15 15:53:32 +00:00
"execution_count": 6,
2022-12-13 15:50:46 +00:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"llm_result.generations[0]"
]
},
{
"cell_type": "code",
2022-12-15 15:53:32 +00:00
"execution_count": 7,
2022-12-14 16:25:37 +00:00
"id": "4946a778",
2022-12-13 15:50:46 +00:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
2022-12-15 15:53:32 +00:00
"[Generation(text=\"\\n\\nA rose by the side of the road\\n\\nIs all I need to find my way\\n\\nTo the place I've been searching for\\n\\nAnd my heart is singing with joy\\n\\nWhen I look at this rose\\n\\nIt reminds me of the love I've found\\n\\nAnd I know that wherever I go\\n\\nI'll always find my rose by the side of the road.\"),\n",
2022-12-16 06:35:42 +00:00
" Generation(text=\"\\n\\nWhen I was younger\\nI thought that love\\nI was something like a fairytale\\nI would find my prince and they would be my people\\nI was naïve\\nI thought that\\n\\nLove was a something that happened\\nWhen I was younger\\nI was it for my fairytale prince\\nNow I realize\\nThat love is something that waits\\nFor when my prince comes\\nAnd when I am ready to be his wife\\nI'll tell you a poem\\n\\nWhen I was younger\\nI thought that love\\nI was something like a fairytale\\nI would find my prince and they would be my people\\nI was naïve\\nI thought that\\n\\nLove was a something that happened\\nAnd I would be happy\\nWhen my prince came\\nAnd I was ready to be his wife\")]"
2022-12-13 15:50:46 +00:00
]
},
2022-12-15 15:53:32 +00:00
"execution_count": 7,
2022-12-13 15:50:46 +00:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
2022-12-14 16:25:37 +00:00
"llm_result.generations[-1]"
2022-12-13 15:50:46 +00:00
]
},
{
"cell_type": "code",
2022-12-14 16:25:37 +00:00
"execution_count": 8,
"id": "242e4527",
2022-12-13 15:50:46 +00:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
2022-12-16 06:35:42 +00:00
"{'token_usage': {'completion_tokens': 3722,\n",
2022-12-14 16:25:37 +00:00
" 'prompt_tokens': 120,\n",
2022-12-16 06:35:42 +00:00
" 'total_tokens': 3842}}"
2022-12-13 15:50:46 +00:00
]
},
2022-12-14 16:25:37 +00:00
"execution_count": 8,
2022-12-13 15:50:46 +00:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Provider specific info\n",
"llm_result.llm_output"
]
},
{
"cell_type": "markdown",
2022-12-14 16:25:37 +00:00
"id": "bde8e04f",
2022-12-13 15:50:46 +00:00
"metadata": {},
"source": [
"**Number of Tokens:** You can also estimate how many tokens a piece of text will be in that model. This is useful because models have a context length (and cost more for more tokens), which means you need to be aware of how long the text you are passing in is.\n",
"\n",
"Notice that by default the tokens are estimated using a HuggingFace tokenizer."
]
},
{
"cell_type": "code",
2022-12-15 15:53:32 +00:00
"execution_count": 9,
2022-12-14 16:25:37 +00:00
"id": "b623c774",
2022-12-13 15:50:46 +00:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3"
]
},
2022-12-15 15:53:32 +00:00
"execution_count": 9,
2022-12-13 15:50:46 +00:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"llm.get_num_tokens(\"what a joke\")"
]
}
],
"metadata": {
"kernelspec": {
2022-12-19 22:36:14 +00:00
"display_name": "Python 3 (ipykernel)",
2022-12-13 15:50:46 +00:00
"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",
2022-12-19 22:36:14 +00:00
"version": "3.10.8"
2022-12-17 00:47:23 +00:00
},
"vscode": {
"interpreter": {
"hash": "1235b9b19e8e9828b5c1fdb2cd89fe8d3de0fcde5ef5f3db36e4b671adb8660f"
}
2022-12-13 15:50:46 +00:00
}
},
"nbformat": 4,
"nbformat_minor": 5
}