mirror of
https://github.com/hwchase17/langchain
synced 2024-10-31 15:20:26 +00:00
182 lines
5.4 KiB
Plaintext
182 lines
5.4 KiB
Plaintext
|
{
|
|||
|
"cells": [
|
|||
|
{
|
|||
|
"attachments": {},
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"# Baidu Qianfan\n",
|
|||
|
"\n",
|
|||
|
"Baidu AI Cloud Qianfan Platform is a one-stop large model development and service operation platform for enterprise developers. Qianfan not only provides including the model of Wenxin Yiyan (ERNIE-Bot) and the third-party open source models, but also provides various AI development tools and the whole set of development environment, which facilitates customers to use and develop large model applications easily.\n",
|
|||
|
"\n",
|
|||
|
"Basically, those model are split into the following type:\n",
|
|||
|
"\n",
|
|||
|
"- Embedding\n",
|
|||
|
"- Chat\n",
|
|||
|
"- Completion\n",
|
|||
|
"\n",
|
|||
|
"In this notebook, we will introduce how to use langchain with [Qianfan](https://cloud.baidu.com/doc/WENXINWORKSHOP/index.html) mainly in `Chat` corresponding\n",
|
|||
|
" to the package `langchain/chat_models` in langchain:\n",
|
|||
|
"\n",
|
|||
|
"\n",
|
|||
|
"## API Initialization\n",
|
|||
|
"\n",
|
|||
|
"To use the LLM services based on Baidu Qianfan, you have to initialize these parameters:\n",
|
|||
|
"\n",
|
|||
|
"You could either choose to init the AK,SK in enviroment variables or init params:\n",
|
|||
|
"\n",
|
|||
|
"```base\n",
|
|||
|
"export QIANFAN_AK=XXX\n",
|
|||
|
"export QIANFAN_SK=XXX\n",
|
|||
|
"```\n",
|
|||
|
"\n",
|
|||
|
"## Current supported models:\n",
|
|||
|
"\n",
|
|||
|
"- ERNIE-Bot-turbo (default models)\n",
|
|||
|
"- ERNIE-Bot\n",
|
|||
|
"- BLOOMZ-7B\n",
|
|||
|
"- Llama-2-7b-chat\n",
|
|||
|
"- Llama-2-13b-chat\n",
|
|||
|
"- Llama-2-70b-chat\n",
|
|||
|
"- Qianfan-BLOOMZ-7B-compressed\n",
|
|||
|
"- Qianfan-Chinese-Llama-2-7B\n",
|
|||
|
"- ChatGLM2-6B-32K\n",
|
|||
|
"- AquilaChat-7B"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": null,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"\"\"\"For basic init and call\"\"\"\n",
|
|||
|
"from langchain.chat_models.baidu_qianfan_endpoint import QianfanChatEndpoint \n",
|
|||
|
"from langchain.chat_models.base import HumanMessage\n",
|
|||
|
"import os\n",
|
|||
|
"os.environ[\"QIAFAN_AK\"] = \"xxx\"\n",
|
|||
|
"os.environ[\"QIAFAN_AK\"] = \"xxx\"\n",
|
|||
|
"\n",
|
|||
|
"\n",
|
|||
|
"chat = QianfanChatEndpoint(\n",
|
|||
|
" qianfan_ak=\"xxx\",\n",
|
|||
|
" qianfan_sk=\"xxx\",\n",
|
|||
|
" streaming=True, \n",
|
|||
|
" )\n",
|
|||
|
"res = chat([HumanMessage(content=\"write a funny joke\")])\n"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": null,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
" \n",
|
|||
|
"from langchain.chat_models.baidu_qianfan_endpoint import QianfanChatEndpoint\n",
|
|||
|
"from langchain.schema import HumanMessage\n",
|
|||
|
"import asyncio\n",
|
|||
|
"\n",
|
|||
|
"chatLLM = QianfanChatEndpoint(\n",
|
|||
|
" streaming=True,\n",
|
|||
|
")\n",
|
|||
|
"res = chatLLM.stream([HumanMessage(content=\"hi\")], streaming=True)\n",
|
|||
|
"for r in res:\n",
|
|||
|
" print(\"chat resp1:\", r)\n",
|
|||
|
"\n",
|
|||
|
"\n",
|
|||
|
"async def run_aio_generate():\n",
|
|||
|
" resp = await chatLLM.agenerate(messages=[[HumanMessage(content=\"write a 20 words sentence about sea.\")]])\n",
|
|||
|
" print(resp)\n",
|
|||
|
" \n",
|
|||
|
"await run_aio_generate()\n",
|
|||
|
"\n",
|
|||
|
"async def run_aio_stream():\n",
|
|||
|
" async for res in chatLLM.astream([HumanMessage(content=\"write a 20 words sentence about sea.\")]):\n",
|
|||
|
" print(\"astream\", res)\n",
|
|||
|
" \n",
|
|||
|
"await run_aio_stream()"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"attachments": {},
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"## Use different models in Qianfan\n",
|
|||
|
"\n",
|
|||
|
"In the case you want to deploy your own model based on Ernie Bot or third-party open sources model, you could follow these steps:\n",
|
|||
|
"\n",
|
|||
|
"- 1. (Optional, if the model are included in the default models, skip it)Deploy your model in Qianfan Console, get your own customized deploy endpoint.\n",
|
|||
|
"- 2. Set up the field called `endpoint` in the initlization:"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": null,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"chatBloom = QianfanChatEndpoint(\n",
|
|||
|
" streaming=True, \n",
|
|||
|
" model=\"BLOOMZ-7B\",\n",
|
|||
|
" )\n",
|
|||
|
"res = chatBloom([HumanMessage(content=\"hi\")])\n",
|
|||
|
"print(res)"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"attachments": {},
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"## Model Params:\n",
|
|||
|
"\n",
|
|||
|
"For now, only `ERNIE-Bot` and `ERNIE-Bot-turbo` support model params below, we might support more models in the future.\n",
|
|||
|
"\n",
|
|||
|
"- temperature\n",
|
|||
|
"- top_p\n",
|
|||
|
"- penalty_score\n"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": null,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"res = chat.stream([HumanMessage(content=\"hi\")], **{'top_p': 0.4, 'temperature': 0.1, 'penalty_score': 1})\n",
|
|||
|
"\n",
|
|||
|
"for r in res:\n",
|
|||
|
" print(r)"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"metadata": {
|
|||
|
"kernelspec": {
|
|||
|
"display_name": "Python 3",
|
|||
|
"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.8.2"
|
|||
|
},
|
|||
|
"vscode": {
|
|||
|
"interpreter": {
|
|||
|
"hash": "2d8226dd90b7dc6e8932aea372a8bf9fc71abac4be3cdd5a63a36c2a19e3700f"
|
|||
|
}
|
|||
|
}
|
|||
|
},
|
|||
|
"nbformat": 4,
|
|||
|
"nbformat_minor": 2
|
|||
|
}
|