当前位置: 首页 > news >正文

17. LangChain实战项目2——易速鲜花宣传文案批量生成并导出

初始化

# 设置OpenAI API Key
import os
from dotenv import load_dotenv
load_dotenv()

# 导入LangChain中的提示模板
from langchain.prompts import PromptTemplate
# 创建原始模板
template = """您是一位专业的鲜花店文案撰写员。\n
对于售价为 {price} 元的 {flower_name} ,您能提供一个吸引人的简短描述吗?
{format_instructions}
"""

定义了一个大模型的原始模板

定义输出模板拿到格式提示

# 导入结构化输出解析器和ResponseSchema
from langchain.output_parsers import StructuredOutputParser, ResponseSchema
# 定义我们想要接收的响应模式
response_schemas = [
    ResponseSchema(name="description", description="鲜花的描述文案"),
    ResponseSchema(name="reason", description="问什么要这样写这个文案")
]
# 创建输出解析器
output_parser = StructuredOutputParser.from_response_schemas(response_schemas)
# 获取格式指示
format_instructions = output_parser.get_format_instructions()
print(format_instructions)

初始化llm

# 根据原始模板创建LangChain提示模板
prompt = PromptTemplate.from_template(template, partial_variables={"format_instructions": format_instructions})

# 创建模型实例
from langchain_openai import ChatOpenAI
ai_model = os.getenv("OPENAI_MODEL")
model = ChatOpenAI(model_name=ai_model)

# 多种花的列表
flowers = ["玫瑰", "百合", "康乃馨"]
prices = ["50", "30", "20"]

调用大模型解析结果

# 创建一个空的DataFrame用于存储结果
import pandas as pd
df = pd.DataFrame(columns=["flower", "price", "description", "reason"])

# 生成多种花的文案
for flower, price in zip(flowers, prices):
    # 输入提示
    input = prompt.format(flower_name=flower, price=price)
    # 得到模型的输出
    output = model.invoke(input)
    # 解析模型的输出(这是一个字典结构)
    print(output.content)
    parsed_output = output_parser.parse(output.content)

    # 在解析后的输出中添加“flower”和“price”
    parsed_output['flower'] = flower
    parsed_output['price'] = price

    # 将解析后的输出添加到DataFrame中
    df.loc[len(df)] = parsed_output

# 打印字典
print(df.to_dict(orient='records'))

# 保存DataFrame到CSV文件
df.to_csv("flowers_with_descriptions.csv", index=False)

相关文章:

  • 探秘基带算法:从原理到5G时代的通信变革【十】基带算法应用与对比
  • 【图像处理与OpenCV:技术栈、应用和实现】
  • 防火墙旁挂组网双机热备负载均衡
  • Storm 踩坑之路
  • Animate Anyone本地部署教程:AI动画生成技术的革命性突破
  • 网卡驱动接收数据----软中断处理数据----socket接收数据
  • 太阳同步轨道的进动速度解析
  • 摄像头应用编程(二):单平面视频采集
  • TCP 连接故障排查与 SYN 洪泛攻击防御
  • 【网络编程】之TCP通信步骤
  • 幸狐picomax SDK 适配 rv1160G2 摄像头
  • CyberRT(apollo) 定时器模块简述及bug分析
  • 【Elasticsearch】索引生命周期管理相关的操作(Index Lifecycle Actions)
  • KVMOVS组网配置案例-4
  • 机器学习:特征提取
  • Linux远程连接vscode
  • MySql面试总结(二)
  • 英码科技携昇腾DeepSeek大模型一体机亮相第三届北京人工智能产业创新发展大会
  • 大数据“调味“ ,智慧“添香“,看永洪科技助力绝味食品数字化新征程
  • vue3.2响应式优化
  • 重庆大学通报本科生发14篇SCI论文:涉事学生及其父亲被处理
  • 交涉之政、交涉之学与交涉文献——《近代中外交涉史料丛书》第二辑“总序”
  • 网络主播直播泄机密,别让这些“小事”成威胁国家安全的“突破口”
  • 冯德莱恩:欧美贸易谈判前不会前往美国会见特朗普
  • 上报集团社长李芸:发挥媒体优势,让中非民心在数字时代更深层互联互通
  • 中国一重集团有限公司副总经理陆文俊被查