专栏名称: 张铁蕾
老程序猿,全栈攻城狮,CTO,与你一起讨论技术干货和个人成长。
今天看啥  ›  专栏  ›  张铁蕾

LangChain的OpenAI和ChatOpenAI,到底应该调用哪个?

张铁蕾  · 公众号  · 科技创业 科技自媒体  · 2024-12-29 09:25
    

主要观点总结

本文主要讨论了在使用LangChain连接LLM推理服务时,应调用OpenAI还是ChatOpenAI的问题。文章深入解释了两个接口的区别,涉及到completions和chat completions的区别,以及LLM推理时使用的chat template。文章还讨论了如何正确调用这些接口,特别是在使用vLLM等开源推理框架时需要注意的问题。

关键观点总结

关键观点1: OpenAI和ChatOpenAI的区别

OpenAI用于调用/v1/completions接口,提供续写能力;ChatOpenAI用于调用/v1/chat/completions接口,提供对话能力。这两个接口分别对应LLM的Base Model和Instruct Model。

关键观点2: chat template的重要性

chat template是用于将对话历史内容转化为free text的模板,对于Instruct Model的推理服务非常重要。

关键观点3: vLLM启动时的chat template获取方式

可以从模型文件夹中加载,也可以通过启动参数指定。如果没有正确加载chat template,可能会影响模型的回答准确度。

关键观点4: 如何正确调用LangChain的类

对于Base Model的推理服务,只能使用LangChain的OpenAI类;对于Instruct Model的推理服务,推荐使用ChatOpenAI类,也可以在调用OpenAI类之前手动拼接prompt。


文章预览

浮言易逝,唯有文字长存。 今天来聊一个非常具体的技术问题。 对于工程师来说,当我们使用LangChain来连接一个LLM推理服务时,多多少少会碰到一个疑问:到底应该调用 OpenAI 还是 ChatOpenAI ?我发现,每次解释这个问题时,都会费很多唇舌,所以干脆写下来供更多人参考。这背后其实涉及到两个关键问题: completions 和 chat completions 两个接口的区别。 LLM推理时用到的chat template。 completions 和 chat completions 通过LangChain来调用LLM的时候,通常会引用下面这两个类: from langchain_openai import OpenAI from langchain_openai import ChatOpenAI 从这两个类的名字就不难猜出,它们是用来调用OpenAI提供的LLM接口的。具体来说,是这两个接口: OpenAI 用来调用 /v1/completions 接口。 ChatOpenAI 用来调用 /v1/chat/completions 接口。 不过呢,由于OpenAI的影响力实在太大,很多其他闭源和开 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览