langchain(1):使用LangChain 调用 openai 的 text/chat model

利用LangChain调用OpenAI的Text与Chat模型:API详解与应用
文章介绍了如何通过LangChain库调用OpenAI的Text和Chat模型,区分了两种模型的功能和调用方法,强调了Chat模型在对话处理中的优势以及LangChain简化API调用的过程。

重要参考

langchain 中文网
langchain api
openai api 文档
huggingface

LangChain 是一个全方位的、基于大语言模型这种预测能力的应用开发工具,它的灵活性和模块化特性使得处理语言模型变得极其简便。不论你在何时何地,都能利用它流畅地调用语言模型,并基于语言模型的“预测”或者说“推理”能力开发新的应用。
LangChain 本质上就是对各种大模型提供的 API 的套壳,是为了方便我们使用这些 API,搭建起来的一些框架、模块和接口。
因此,要了解 LangChain 的底层逻辑,需要了解大模型的 API 的基本设计思路。而目前接口最完备的、同时也是最强大的大语言模型,当然是 OpenAI 提供的 GPT 家族模型。

OPENAI API

由于 LangChain 需要调用大模型的API,这里以 openai 为主要大模型api进行介绍。

在这里插入图片描述

  • Chat Model,聊天模型,用于产生人类和 AI 之间的对话,代表模型当然是 gpt-3.5-turbo(也就是 ChatGPT)和 GPT-4。当然,OpenAI 还提供其它的版本,gpt-3.5-turbo-0613 代表 ChatGPT 在 2023 年 6 月 13 号的一个快照,而 gpt-3.5-turbo-16k 则代表这个模型可以接收 16K 长度的 Token,而不是通常的 4K。(注意了,gpt-3.5-turbo-16k 并未开放给我们使用,而且你传输的字节越多,花钱也越多)
  • Text Model,文本模型,在 ChatGPT 出来之前,大家都使用这种模型的 API 来调用 GPT-3,文本模型的代表作是 text-davinci-003(基于 GPT3)。而在这个模型家族中,也有专门训练出来做文本嵌入的 text-embedding-ada-002,也有专门做相似度比较的模型,如 text-similarity-curie-001。上面这两种模型,提供的功能类似,都是接收对话输入(input,也叫 prompt),返回回答文本(output,也叫 response)。但是,它们的调用方式和要求的输入格式是有区别的,

调用 Text 模型

import openai

response = openai.Completion.create(
  model="text-davinci-003",
  temperature=0.5,
  max_tokens=100,
  prompt="请给我的花店起个名")
print(response.choices[0].text.strip())

在使用 OpenAI 的文本生成模型时,你可以通过一些参数来控制输出的内容和样式。这里总结为了一些常见的参数。

### 后端集成 LangChain 聊天功能实现指南 为了在后端实现基于 LangChain 的聊天功能,可以按照以下方式设计架构并完成具体实现。以下是详细的说明: #### 架构概述 LangChain 是一种用于构建大型语言模型应用的框架,它提供了多种工具来处理数据流、对话历史记录以及上下文管理等功能。通过将其与后端服务相结合,能够创建高效的聊天机器人解决方案。 1. **初始化 LangChain 配置** 在后端环境中引入 LangChain 库,并配置所需的 LLM(Large Language Model)。这通常涉及设置 API 密钥和指定使用的模型版本[^2]。 ```python from langchain.llms import OpenAI llm = OpenAI(temperature=0.9, model_name="text-davinci-003", openai_api_key="your-api-key") ``` 2. **定义会话存储机制** 使用内存缓存或数据库保存用户的对话历史记录,以便后续请求能保持连贯性。LangChain 提供了 `ConversationBufferMemory` 类作为默认选项之一。 ```python from langchain.memory import ConversationBufferMemory memory = ConversationBufferMemory() ``` 3. **创建 Chain 或 Agent 实例** 根据需求选择合适的 chain 或 agent 来封装逻辑流程。对于简单的问答场景可以直接采用 RetrievalQA;而对于复杂交互则推荐使用 ConversationalAgent。 ```python from langchain.chains import ConversationChain conversation_chain = ConversationChain(llm=llm, memory=memory) ``` 4. **暴露 RESTful 接口** 利用 Flask/Django/FastAPI 等 Web 框架搭建 HTTP 服务器,在其中定义接收前端消息并向 LangChain 发送查询的服务接口[^3]。 ```python from fastapi import FastAPI app = FastAPI() @app.post("/chat/") async def chat_endpoint(user_input: str): response = conversation_chain.run(input=user_input) return {"response": response} ``` 5. **信号传递与实时通信支持** 如果希望进一步增强用户体验,则可以通过 WebSocket 技术实现实时推送通知或者状态更新的功能。这样即使是在多轮次交流过程中也无需频繁刷新页面即可获得即时反馈。 以上就是关于如何将 LangChain 整合到后端以提供聊天能力的一个基本指导方案。需要注意的是实际操作当中可能还会遇到诸如性能调优、安全性加固等方面的问题需要额外考虑解决办法。 ```python from fastapi import FastAPI, WebSocket import asyncio app = FastAPI() @app.websocket("/ws/chat/") async def websocket_chat(websocket: WebSocket): await websocket.accept() while True: user_message = await websocket.receive_text() bot_response = conversation_chain.run(input=user_message) await websocket.send_text(bot_response) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RessCris

老铁门多支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值