使用本地大模型可以根据需要给文本打标签,本文介绍了如何基于 langchain
和本地部署的大模型给文本打标签。
本文使用
llama3.1
作为本地大模型,它的性能比非开源大模型要查一下,不过在我们可以调整提示词后,它也基本能达到要求。
准备
在正式开始撸代码之前,需要准备一下编程环境。
-
计算机
本文涉及的所有代码可以在没有显存的环境中执行。 我使用的机器配置为:- CPU: Intel i5-8400 2.80GHz
- 内存: 16GB
-
Visual Studio Code 和 venv
这是很受欢迎的开发工具,相关文章的代码可以在Visual Studio Code
中开发和调试。 我们用python
的venv
创建虚拟环境, 详见:
在Visual Studio Code中配置venv。 -
Ollama
在Ollama
平台上部署本地大模型非常方便,基于此平台,我们可以让langchain
使用llama3.1
、qwen2.5
等各种本地大模型。详见:
在langchian中使用本地部署的llama3.1大模型 。
实例化本地大模型
from langchain_ollama import ChatOllama
llm = ChatOllama(model="llama3.1",temperature=0.2,verbose=True)
情感分析
下面的代码定义了一个类 Classification
用来限定大模型对文本打标签后的格式。大模型需要给文本打如下三个标签:
- sentiment/情绪: positive/积极的,negative/消极的
- aggressiveness/攻击性: 以1-10代表
- language/语言: 文本的语言
def simple_control(s):
tagging_prompt = ChatPromptTemplate.from_template(
"""
Extract the desired information from the following passage.
Only extract the properties mentioned in the 'Classification' function.
Passage:
{input}
"""
)
# 指定 Pydantic 模型控制返回内容格式
class Classification(BaseModel):
sentiment: str = Field(description=