模型比较
构建语言模型应用程序很可能涉及选择许多不同的提示、模型甚至链的选项。在这样做时,您希望以一种简单、灵活和直观的方式比较这些不同的选项在不同的输入上的表现。
LangChain 提供了一个 ModelLaboratory 的概念,用于测试和尝试不同的模型。
from langchain import LLMChain, OpenAI, Cohere, HuggingFaceHub, PromptTemplate
from langchain.model_laboratory import ModelLaboratory
llms = [
OpenAI(temperature=0),
Cohere(model="command-xlarge-20221108", max_tokens=20, temperature=0),
HuggingFaceHub(repo_id="google/flan-t5-xl", model_kwargs={"temperature": 1}),
]
model_lab = ModelLaboratory.from_llms(llms)
model_lab.compare("What color is a flamingo?")
输入:
What color is a flamingo?
OpenAI
参数: {'model': 'text-davinci-002', 'temperature': 0.0, 'max_tokens': 256, 'top_p': 1, 'frequency_penalty': 0, 'presence_penalty': 0, 'n': 1, 'best_of': 1}
火烈鸟是粉红色的。
Cohere
参数: {'model': 'command-xlarge-20221108', 'max_tokens': 20, 'temperature': 0.0, 'k': 0, 'p': 1, 'frequency_penalty': 0, 'presence_penalty': 0}
粉红色
HuggingFaceHub
参数: {'repo_id': 'google/flan-t5-xl', 'temperature': 1}
粉红色
prompt = PromptTemplate(
template="What is the capital of {state}?", input_variables=["state"]
)
model_lab_with_prompt = ModelLaboratory.from_llms(llms, prompt=prompt)
model_lab_with_prompt.compare("New York")
输入:
New York
OpenAI
参数: {'model': 'text-davinci-002', 'temperature': 0.0, 'max_tokens': 256, 'top_p': 1, 'frequency_penalty': 0, 'presence_penalty': 0, 'n': 1, 'best_of': 1}
纽约的首都是奥尔巴尼。
Cohere
参数: {'model': 'command-xlarge-20221108', 'max_tokens': 20, 'temperature': 0.0, 'k': 0, 'p': 1, 'frequency_penalty': 0, 'presence_penalty': 0}
纽约的首都是奥尔巴尼。
HuggingFaceHub
参数: {'repo_id': 'google/flan-t5-xl', 'temperature': 1}
圣约翰斯
from langchain import SelfAskWithSearchChain, SerpAPIWrapper
open_ai_llm = OpenAI(temperature=0)
search = SerpAPIWrapper()
self_ask_with_search_openai = SelfAskWithSearchChain(
llm=open_ai_llm, search_chain=search, verbose=True
)
cohere_llm = Cohere(temperature=0, model="command-xlarge-20221108")
search = SerpAPIWrapper()
self_ask_with_search_cohere = SelfAskWithSearchChain(
llm=cohere_llm, search_chain=search, verbose=True
)
chains = [self_ask_with_search_openai, self_ask_with_search_cohere]
names = [str(open_ai_llm), str(cohere_llm)]
model_lab = ModelLaboratory(chains, names=names)
model_lab.compare("What is the hometown of the reigning men's U.S. Open champion?")
输入:
What is the hometown of the reigning men's U.S. Open champion?
OpenAI
参数: {'model': 'text-davinci-002', 'temperature': 0.0, 'max_tokens': 256, 'top_p': 1, 'frequency_penalty': 0, 'presence_penalty': 0, 'n': 1, 'best_of': 1}
> 进入新的链...
What is the hometown of the reigning men's U.S. Open champion?
这里需要后续问题吗: 是的。
后续问题: 谁是现任男子美国公开赛冠军?
中间答案: 卡洛斯·阿尔卡拉斯。
后续问题: 卡洛斯·阿尔卡拉斯来自哪里?
中间答案: 西班牙的埃尔帕尔马尔。
所以最终答案是: 西班牙的埃尔帕尔马尔
> 完成链。
所以最终答案是: 西班牙的埃尔帕尔马尔
Cohere
参数: {'model': 'command-xlarge-20221108', 'max_tokens': 256, 'temperature': 0.0, 'k': 0, 'p': 1, 'frequency_penalty': 0, 'presence_penalty': 0}
> 进入新的链...
What is the hometown of the reigning men's U.S. Open champion?
这里需要后续问题吗: 是的。
后续问题: 谁是现任男子美国公开赛冠军?
中间答案: 卡洛斯·阿尔卡拉斯。
所以最终答案是:
卡洛斯·阿尔卡拉斯
> 完成链。
所以最终答案是:
卡洛斯·阿尔卡拉斯