mirror of
https://github.com/hwchase17/langchain.git
synced 2025-05-18 21:41:24 +00:00
**Description:** (a) Update to the module import path to reflect the splitting up of langchain into separate packages (b) Update to the documentation to include the new calling method (invoke)
214 lines
5.5 KiB
Plaintext
214 lines
5.5 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "raw",
|
|
"id": "afaf8039",
|
|
"metadata": {},
|
|
"source": [
|
|
"---\n",
|
|
"sidebar_label: OpenAI\n",
|
|
"---"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "e49f1e0d",
|
|
"metadata": {},
|
|
"source": [
|
|
"# ChatOpenAI\n",
|
|
"\n",
|
|
"This notebook covers how to get started with OpenAI chat models."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"id": "522686de",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"from langchain_core.messages import HumanMessage, SystemMessage\n",
|
|
"from langchain_core.prompts.chat import (\n",
|
|
" ChatPromptTemplate,\n",
|
|
" HumanMessagePromptTemplate,\n",
|
|
" SystemMessagePromptTemplate,\n",
|
|
")\n",
|
|
"from langchain_openai import ChatOpenAI"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"id": "62e0dbc3",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"chat = ChatOpenAI(temperature=0)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "4e5fe97e",
|
|
"metadata": {},
|
|
"source": [
|
|
"The above cell assumes that your OpenAI API key is set in your environment variables. If you would rather manually specify your API key and/or organization ID, use the following code:\n",
|
|
"\n",
|
|
"```python\n",
|
|
"chat = ChatOpenAI(temperature=0, openai_api_key=\"YOUR_API_KEY\", openai_organization=\"YOUR_ORGANIZATION_ID\")\n",
|
|
"```\n",
|
|
"Remove the openai_organization parameter should it not apply to you."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"id": "ce16ad78-8e6f-48cd-954e-98be75eb5836",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"AIMessage(content=\"J'adore la programmation.\", additional_kwargs={}, example=False)"
|
|
]
|
|
},
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"messages = [\n",
|
|
" SystemMessage(\n",
|
|
" content=\"You are a helpful assistant that translates English to French.\"\n",
|
|
" ),\n",
|
|
" HumanMessage(\n",
|
|
" content=\"Translate this sentence from English to French. I love programming.\"\n",
|
|
" ),\n",
|
|
"]\n",
|
|
"chat.invoke(messages)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "778f912a-66ea-4a5d-b3de-6c7db4baba26",
|
|
"metadata": {},
|
|
"source": [
|
|
"You can make use of templating by using a `MessagePromptTemplate`. You can build a `ChatPromptTemplate` from one or more `MessagePromptTemplates`. You can use `ChatPromptTemplate`'s `format_prompt` -- this returns a `PromptValue`, which you can convert to a string or Message object, depending on whether you want to use the formatted value as input to an llm or chat model.\n",
|
|
"\n",
|
|
"For convenience, there is a `from_template` method exposed on the template. If you were to use this template, this is what it would look like:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"id": "180c5cc8",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"template = (\n",
|
|
" \"You are a helpful assistant that translates {input_language} to {output_language}.\"\n",
|
|
")\n",
|
|
"system_message_prompt = SystemMessagePromptTemplate.from_template(template)\n",
|
|
"human_template = \"{text}\"\n",
|
|
"human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"id": "fbb043e6",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"AIMessage(content=\"J'adore la programmation.\", additional_kwargs={}, example=False)"
|
|
]
|
|
},
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"chat_prompt = ChatPromptTemplate.from_messages(\n",
|
|
" [system_message_prompt, human_message_prompt]\n",
|
|
")\n",
|
|
"\n",
|
|
"# get a chat completion from the formatted messages\n",
|
|
"chat.invoke(\n",
|
|
" chat_prompt.format_prompt(\n",
|
|
" input_language=\"English\", output_language=\"French\", text=\"I love programming.\"\n",
|
|
" ).to_messages()\n",
|
|
")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "57e27714",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Fine-tuning\n",
|
|
"\n",
|
|
"You can call fine-tuned OpenAI models by passing in your corresponding `modelName` parameter.\n",
|
|
"\n",
|
|
"This generally takes the form of `ft:{OPENAI_MODEL_NAME}:{ORG_NAME}::{MODEL_ID}`. For example:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"id": "33c4a8b0",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"AIMessage(content=\"J'adore la programmation.\", additional_kwargs={}, example=False)"
|
|
]
|
|
},
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"fine_tuned_model = ChatOpenAI(\n",
|
|
" temperature=0, model_name=\"ft:gpt-3.5-turbo-0613:langchain::7qTVM5AR\"\n",
|
|
")\n",
|
|
"\n",
|
|
"fine_tuned_model(messages)"
|
|
]
|
|
}
|
|
],
|
|
"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.10.5"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|