Skip to main content

模型比较

构建语言模型应用程序很可能涉及选择许多不同的提示、模型甚至链条。在这样做时,您将希望以一种简单、灵活和直观的方式比较这些不同的选项在不同的输入上。

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("火烈鸟是什么颜色?")
输入:
火烈鸟是什么颜色?

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="{state}的首都是什么?", input_variables=["state"]
)
model_lab_with_prompt = ModelLaboratory.from_llms(llms, prompt=prompt)
model_lab_with_prompt.compare("纽约")
Input:
New York

OpenAI
Params: {'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
Params: {'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("现任男子美国公开赛冠军的家乡在哪里?")
Input:
What is the hometown of the reigning men's U.S. Open champion?

OpenAI
Params: {'model': 'text-davinci-002', 'temperature': 0.0, 'max_tokens': 256, 'top_p': 1, 'frequency_penalty': 0, 'presence_penalty': 0, 'n': 1, 'best_of': 1}


> Entering new chain...
What is the hometown of the reigning men's U.S. Open champion?
Are follow up questions needed here: Yes.
Follow up: Who is the reigning men's U.S. Open champion?
Intermediate answer: Carlos Alcaraz.
Follow up: Where is Carlos Alcaraz from?
Intermediate answer: El Palmar, Spain.
So the final answer is: El Palmar, Spain
> Finished chain.

So the final answer is: El Palmar, Spain

Cohere
Params: {'model': 'command-xlarge-20221108', 'max_tokens': 256, 'temperature': 0.0, 'k': 0, 'p': 1, 'frequency_penalty': 0, 'presence_penalty': 0}


> 进入新的链条...
现任男子美国公开赛冠军的家乡在哪里?
这里是否需要后续问题: 是的。
后续问题: 现任男子美国公开赛冠军是谁?
中间答案: 卡洛斯·阿尔卡拉斯。
所以最终答案是:

卡洛斯·阿尔卡拉斯
> 完成链条。

所以最终答案是:

卡洛斯·阿尔卡拉斯