3 使用 Ollama 在本地部署大模型
3.1 下载并运行应用程序
3.2 从命令行中选取模型(ollama pull llam2)
挑选一个比较小的试玩下:
3.3 运行
浏览器:
4 本地大模型调用
既然部署本地完成了,来看看如何调用呢?
from langchain_community.llms import Ollama
llm = Ollama(model="qwen2:0.5b")
llm.invoke(input="你是谁?")
使用流式
#使用流式
from langchain.callbacks.manager import CallbackManager
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler
llm = Ollama(
model="qwen2:0.5b", callback_manager=CallbackManager([StreamingStdOutCallbackHandler()])
)
llm.invoke(input="第一个登上月球的人是谁?")
5 模型评估
5.1 远程大模型
from langchain_openai import ChatOpenAI
from langchain.evaluation import load_evaluator
llm = ChatOpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
model="qwen-plus"
)
evaluator = load_evaluator("criteria", llm=llm, criteria="conciseness")
eval_result = evaluator.evaluate_strings(
prediction="four.",
input="What's 2+2?",
)
print(eval_result)
如果不简洁的回答:
#inpt 输入的评测问题
#prediction 预测的答案
# 返回值 Y/N 是否符合
# 返回值score 1-0分数,1为完全,0为不完全
eval_result = evaluator.evaluate_strings(
prediction="What's 2+2? That's an elementary question. The answer you're looking for is that two and two is four.",
input="What's 2+2?",
)
print(eval_result)
5.2 本地大模型
from langchain_community.chat_models import ChatOllama
llm = ChatOllama(model="qwen2:0.5b")
evaluator = load_evaluator("criteria", llm=llm, criteria="conciseness")
#inpt 输入的评测问题
#prediction 预测的答案
# 返回值 Y或者N是否符合
# 返回值score 1-0分数,1为完全,0为不完全
eval_result = evaluator.evaluate_strings(
prediction="What's 2+2? That's an elementary question. The answer you're looking for is that two and two is four.",
input="What's 2+2?",
)
print(eval_result)
5.3 内置评估标准
# 内置的一些评估标准
from langchain.evaluation import Criteria
list(Criteria)
llm = ChatOllama(model="qwen2:0.5b")
#使用enum格式加载标准
from langchain.evaluation import EvaluatorType
#自定义评估标准
custom_criterion = {
"幽默性": "输出的内容是否足够幽默或者包含幽默元素",
}
eval_chain = load_evaluator(
EvaluatorType.CRITERIA,
llm=llm,
criteria=custom_criterion,
)
query = "给我讲一个笑话"
prediction = "有一天,小明去买菜,结果买了一堆菜回家,结果发现自己忘了带钱。"
eval_result = eval_chain.evaluate_strings(prediction=prediction, input=query)
print(eval_result)
模型比较
from langchain.model_laboratory import ModelLaboratory
from langchain.prompts import PromptTemplate
from langchain_openai import OpenAI
from langchain_community.llms.chatglm import ChatGLM
from langchain_community.chat_models import ChatOllama
#比较openai、ChatGLM、ChatOllama三个模型的效果
llms = [
# OpenAI(temperature=0),
ChatOllama(model="qwen2:0.5b"),
]
model_lab = ModelLaboratory.from_llms(llms)
model_lab.compare("齐天大圣的师傅是谁?")