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("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?
这里需要后续问题吗: 是的。
后续问题: 谁是现任男子美国公开赛冠军?
中间答案: 卡洛斯·阿尔卡拉斯。
所以最终答案是:

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

所以最终答案是:

卡洛斯·阿尔卡拉斯