I read the LangChain Quickstart.
There is a demo inside:
from langchain.llms import OpenAI
from langchain.chat_models import ChatOpenAI
llm = OpenAI()
chat_model = ChatOpenAI()
llm.predict("hi!")
>>> "Hi"
chat_model.predict("hi!")
>>> "Hi"
I searched the rest of the document and also online, but didn't find any info for the difference between OpenAI and ChatOpenAI.
Based on from langchain.llms import OpenAI
, OpenAI is a large language model (LLM) which is also chat related.
So is OpenAI more general-purpose, while ChatOpenAI more chat focused?
What is the difference between OpenAI
class and ChatOpenAI
class in LangChain? Could someone clarify?
Based on my research,
OpenAI
class includes more generic machine learning task attributes such as frequency_penalty
, presence_penalty
, logit_bias
, allowed_special
, disallowed_special
, best_of
.
ChatOpenAI
class provides more chat-related methods, such as completion_with_retry
, get_num_tokens_from_messages
to make it more user-friendly when build chatbot related applications.
Upon reviewing the source code, here's what I've discovered.
Listed below are the class inheritances for both the OpenAI
and ChatOpenAI
classes, along with their respective class attributes and methods.
OpenAI ← BaseOpenAI ← BaseLLM ← BaseLanguageModel
ChatOpenAI ← BaseChatModel ← BaseLanguageModel
Let's begin our comparison, moving from the fourth column to the first column.
Both classes ultimately inherit from the base class BaseLanguageModel
.
BaseLLM
and BaseChatModel
are very similar with slightly difference:
For OpenAI's BaseLLM
, it includes additional methods:
batch(self, inputs, config=None, max_concurrency=None, **kwargs)
abatch (self, inputs, config=None, max_concurrency=None,**kwargs)
For ChatOpenAI's BaseChatModel
, it includes an extra method:
_combine_llm_outputs(self, llm_outputs)
The second column contains the BaseOpenAI
class, which primarily exists due to the presence of higher-level classes OpenAI
and AzureOpenAI
. However, they all share the same class attributes and methods.
At the top-level class (first column):
OpenAI
class includes more generic machine learning task attributes such as frequency_penalty
, presence_penalty
, logit_bias
, allowed_special
, disallowed_special
, best_of
.
ChatOpenAI
class provides more chat-related methods, such as completion_with_retry
, get_num_tokens_from_messages
to make it more user-friendly when build chatbot related applications.