一、行业关键词生成
安装本地模型
使用 LM Studio 下载 Qwen2-7B-Instruct-GGUF 到本地
发现 Qwen2-7B 使用时出现bug,一直输出GGGGGG...
,推测需要开启flash attention
,将 LM Studio 更新至最新版本得以解决。
完整代码、提示词
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
llm = ChatOpenAI(base_url="http://localhost:1234/v1", api_key="lm-studio", max_tokens=1280, temperature=0.7, top_p=0.9)
prompt = ChatPromptTemplate.from_messages([("user",
'''
请你扮演一名专业的行业分析师,你应该利用你的行业知识和其他相关因素提供专业的分析。
请你给出以下行业以下每个主题各3至5个重要关键词,关键词应包括行业术语、概念或趋势,保证关键词的准确、具体、精炼性和与主题的相关度,逻辑连贯,内容低重复度、有深度。避免使用品牌名称或专用词,不要使用':'或'()'扩展关键词内容,关键词要易搜索和理解。
行业:3D动漫制作
主题:
1. 行业定义
2. 行业分类
3. 行业特征
4. 发展历程
5. 产业链分析
6. 市场规模
7. 政策分析
8. 竞争格局
使用以下格式:
1. <主题1>
- <关键词1>
- <关键词2>
- <关键词3>
- <关键词4>
- <关键词5>
2. <主题2>
- <关键词1>
..
..
8. ..
样例:
1. 行业定义
- 水域资源管理
- 养殖技术进步
- 水产品质量监控
- 海洋生态环境保护
- 农水联动模式
2. 行业分类
- 鲤鱼养殖
- 虾蟹养殖
- 牛蛙业
- 海参养殖
- 浮游生物养殖
3. 行业特征
- 规模化生产
- 生物多样性
- 投入成本高
- 市场周期性强
- 环保压力大
4. 发展历程
- 人工饲料
- 智能水产养殖
- 全球化市场拓展
- 产业链整合
- 技术驱动革新
5. 产业链分析
- 种苗供应
- 饲料加工
- 畜牧用地租赁
- 养殖基地建设
- 销售和分销
6. 市场规模
- 全球水产养殖产量
- 主要消费国市场
- 国内市场规模与增长
- 年度报告与预测
- 盈利能力分析
7. 政策分析
- 环保政策影响
- 信贷和补贴支持
- 农业补贴调整
- 水产养殖许可证制度
- 全球贸易法规变动
8. 竞争格局
- 主要企业竞争态势
- 新进入者威胁
- 品牌差异化策略
- 外资并购与合作
- 行业内并购案例分析
'''
)])
str_output_parser = StrOutputParser()
chain = prompt | llm | str_output_parser
input = "3D动漫制作"
reply = chain.invoke({
"input": input})
代码解析
使用 LangChain 与本地大模型来生成一份关于特定行业的关键词分析。
- 导入模块:
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
这些模块分别用于与 OpenAI 的聊天模型接口(ChatOpenAI),构建提示模板(ChatPromptTemplate),以及解析模型输出的字符串(StrOutputParser)。
- 配置聊天模型:
llm = ChatOpenAI(base_url="http://localhost:1234/v1", api_key="lm-studio", max_tokens=1280, temperature=0.7, top_p=0.9)
这里通过 ChatOpenAI 类配置了一个聊天模型实例 llm,使用了本地服务器的 API(http://localhost:1234/v1)。同时,设置了生成内容的参数,比如最大 token 数(max_tokens=1280)、温度(temperature=0.7)和 top_p(top_p=0.9)。这些参数控制了模型输出的长度和多样性。
- 构建提示模板:
prompt = ChatPromptTemplate.from_messages([("user",
'''
请你扮演一名专业的行业分析师,你应该利用你的行业知识和其他相关因素提供专业的分析。
...
''' )])
这里创建了一个聊天提示模板 prompt,通过 from_messages 方法,将用户输入的详细提示作为模板的一部分。这个提示要求模型生成与特定行业相关的多个主题关键词,并给出了示例和格式要求。
- 设置输出解析器:
str_output_parser = StrOutputParser()
使用 StrOutputParser 创建了一个字符串输出解析器,用于解析模型生成的文本。
- 创建执行链:
chain = prompt | llm | str_output_parser
这里使用管道操作符 | 将提示模板、语言模型和输出解析器串联起来,形成一个完整的处理链 chain。当输入数据通过这个链时,它会按照设定的