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

ollama接口数据返回格式化数据,商品标题,商品详情

代码源:ollama_shop: 商贸ollama接口

一、根据关键字生成商品标题

结构体:

from pydantic import BaseModel, Field# 定义结构化输出格式(符合 Pydantic 的 Schema)
class ProductTitle(BaseModel):keyword: str = Field(..., description="用户提供的商品关键词")title: str = Field(..., min_length=20, max_length=30, description="生成的商品标题,不超过30字")

实现代码:

from ollama import Client
from config import OLLAMA_MODEL, OLLAMA_HOST
from domain.pd import ProductTitle  # 需包含 keyword 和 title 字段,title 限定 max_length=30def main():client = Client(host=OLLAMA_HOST)# 当前关键词keyword_input = "蓝牙耳机,运动,降噪"# 构造历史对话(系统角色+多轮问答)messages = [{"role": "system","content": ("你是一个电商文案生成专家,专门为淘宝、京东、拼多多生成30字以内的简洁商品标题。""所有回复都必须为严格的JSON格式,字段包括 keyword 和 title,title 不得超过30个字符。""不要输出任何解释或多余内容。")},# 历史对话1{"role": "user", "content": "关键词:无线鼠标,静音,轻薄,便携"},{"role": "assistant", "content": '{"keyword": "无线鼠标,静音,轻薄,便携", "title": "静音轻薄无线鼠标 便携办公"}'},# 历史对话2{"role": "user", "content": "关键词:笔记本支架,可调节,铝合金"},{"role": "assistant", "content": '{"keyword": "笔记本支架,可调节,铝合金", "title": "可调节铝合金笔记本支架"}'},# 当前对话{"role": "user","content": (f"关键词:{keyword_input}\n"f"请生成标题,格式如上,title 不超过30字。")}]# 发起请求response = client.chat(model=OLLAMA_MODEL,messages=messages,format=ProductTitle.model_json_schema(),options={"temperature": 0.2})# 验证并输出product = ProductTitle.model_validate_json(response.message.content)print("✅ 生成成功:", product)if __name__ == "__main__":main()

效果: 

这里使用的是 qwen3:0.6b,如果使用的是自己微调过的模型,效果更佳。

二、根据关键字生成商品详情

结构体:

class ProductMarkdown(BaseModel):keyword: strtitle: str = Field(..., min_length=20, max_length=30, description="简洁商品标题")description: str = Field(..., description="商品详情,Markdown 格式")

代码实现:

from ollama import AsyncClient, Clientfrom config import OLLAMA_HOST, OLLAMA_MODEL
from domain.pd import ProductMarkdown# ✅ Ollama Prompt 构造函数
def build_prompt(keyword: str) -> str:return f"""请根据以下关键词生成一个商品标题和商品详情。要求:- 返回 JSON 格式,字段包含 keyword、title、description;- title 不超过 30 个字符;- description 使用 Markdown 格式,换行使用两个空格 `  `,展示卖点,不超过 300 字;- 不需要解释说明,直接返回 JSON。关键词:{keyword}"""# ✅ 主函数
def main():keyword_input = "蓝牙耳机、运动、防水、降噪、长续航"prompt = build_prompt(keyword_input)client = Client(host=OLLAMA_HOST)# ✅ 设置历史对话消息messages = [{"role": "system","content": "你是一个专业电商文案生成助手,擅长用 Markdown 格式写出结构清晰的商品文案。",},{"role": "user","content": build_prompt("蓝牙耳机、轻盈、通话清晰、长续航"),},{"role": "assistant","content": """{"keyword": "蓝牙耳机、轻盈、通话清晰、长续航","title": "轻盈蓝牙耳机 清晰通话长续航","description": "### 产品亮点\\n\\n- **佩戴轻盈**:仅5g机身,长时间佩戴无压力。  \\n- **高清通话**:双麦克风降噪,语音清晰不延迟。  \\n- **长效续航**:单次10小时使用,配仓30小时。  \\n\\n> 通勤、运动两相宜,释放双耳不受“线”制。"
}""",},{"role": "user","content": prompt,}]# ✅ 发送请求response = client.chat(model= OLLAMA_MODEL,  # 替换成你的实际模型messages=messages,format=ProductMarkdown.model_json_schema(),options={"temperature": 0.2})try:product = ProductMarkdown.model_validate_json(response.message.content)print("✅ 商品信息生成成功:\n")print("【标题】", product.title)print("【关键词】", product.keyword)print("【Markdown详情】\n", product.description)except Exception as e:print("❌ 验证失败:", e)print("模型原始响应:", response.message.content)if __name__ == "__main__":main()

效果:

相关文章:

  • 1.3 任务Task的说明(Xqt)
  • Windows逆向工程提升之IMAGE_SECTION_HEADER
  • error: cannot open Packages database in /var/lib/rpm
  • Phantom 根据图片和文字描述,自动生成一段视频,并且动作、场景等内容会按照文字描述来呈现
  • React-fiber架构
  • C++学习:六个月从基础到就业——多线程编程:并发容器与无锁编程
  • [Flutter]Completer和compute
  • python训练营打卡第31天
  • PageHelper分页原理解析:从源码到MySQL方言实现
  • Prometheus 基础入门文档
  • Python基础语法(十二):闭包与装饰器
  • 2004-2022年 地级市-金融机构存储指标-社科经管实证数据
  • Centos7和Centos8版本功能对比
  • Nginx 1.25.4交叉编译问题:编译器路径与aclocal.m4错误解决方案
  • CAD打印没有标注解决方法
  • 【Unity实战笔记】第二十四 · 使用 SMB+Animator 实现基础战斗系统
  • 龙虎榜——20250522
  • 建设工程窝工、停工损失案件庭审发问提纲
  • CS和BS架构
  • 代码随想录算法训练营第60期第四十四天打卡
  • 合肥做网站费用/互联网运营自学课程
  • 免费空间建网站/站长统计推荐
  • 外贸网站建设价格/人工智能培训机构排名
  • 网站建设社会效益/镇江百度公司
  • 在印度做视频网站/今日头条网页版入口
  • 网站支付开发/购买友情链接