内容营销:基于大模型的内容再利用

news2024/10/10 9:25:03

在这篇文章中,我将带你了解一个完整的自动化系统,该系统可帮助你将任何内容重新用于你想要的其他帖子。

输入的内容可以是任何东西:YouTube 视频链接、博客文章链接、大纲、推文、pdf 等……

我将在本文末尾为你提供所有代码。

一步一步地跟着我了解一切是如何运作的,这样你就可以根据自己的喜好编辑代码。

NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - AI模型在线查看 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割 

1、它是如何工作的?

重新利用这些帖子的主要引擎是我们的强力提示。这些提示被输入到 OpenAI 的 LLM 模型或你选择的模型中,它们将为我们完成所有工作。

就我而言,我将使用 GPT-4o。

首先,我们将从输入中的链接/文件中提取内容。

但是我们如何只用一行代码提取任何内容呢?

这是我最近开发的 Python 库 SimplerLLM。您将看到,它使 AI 工具的编码变得更加容易。

从这里开始,我实施了两种策略:

策略 1:我们获取提取的内容,使用 SimplerLLM 将其提供给 OpenAI 的 GPT-4o 模型,并根据我们使用的提示获取一段重新利用的内容。

💡 我实施这个是为了让您更容易掌握主要自动化脚本的基础。

策略 2:这是主要代码,它将获取提取的内容并生成三种不同类型的内容,也使用 SimplerLLM。

然后,我们将获取输出并将它们合并为 1 个 JSON 格式的输出。

现在,无论你使用哪种代码,输出都将保存到代码文件夹中的 txt/json 文件中。

2、策略 1:基础代码

到目前为止,你应该已经掌握了代码工作原理背后的想法。所以,让我们开始技术吧!

首先,我们的代码高度依赖于 SimplerLLM,以使其简单而简短。

因此,让我们开始安装库并导入它:

pip install simplerllm

首先,我们需要创建一个 .env 文件并添加我们的 OpenAI API 密钥,以便 SimplerLLM 函数可以使用它来生成响应。

如果你没有 API 密钥,请转到 OpenAI 的网站并生成一个新密钥。然后,以以下形式将其添加到 .env 文件中:

OPENAI_API_KEY = "YOUR_API_KEY"

现在,我们准备使用代码了;代码如下:

from SimplerLLM.tools.generic_loader import load_content
from SimplerLLM.language.llm import LLM, LLMProvider
from resources import text_to_x_thread, text_to_blog_post, text_to_medium_post, text_to_summary, text_to_newsletter

#This can take a youtube video link, a blog post link, a csv file, etc... as input too 
file = load_content("https://learnwithhasan.com/create-ai-agents-with-python/")

#Edit the prompt name in accordance to what you want to convert it to
final_prompt = text_to_x_thread.format(input = file.content) 

llm_instance = LLM.create(provider=LLMProvider.OPENAI, model_name="gpt-4o")

response = llm_instance.generate_response(prompt=final_prompt, max_tokens=1000)

with open("response.txt", "w", encoding='utf-8') as f:
    f.write(response)

如你所见,我们在代码中导入了两样东西:我们将使用的 SimplerLLM 函数和资源文件,我创建并保存了所有强力提示,我会免费提供给你!

文件变量使用 SimplerLLm 函数 load_content,该函数将你的链接/文件作为输入并加载其数据。

因此,我将首先格式化我的提示并将其存储在 final_prompt 变量中。

这可以通过使用 text_to_x_thread 提示来完成,我们从资源文件中导入该提示并将其与博客文章内容一起传递,如上所示。

现在,我们创建一个 OpenAI LLM 实例以调用他们的 GPT 模型,并使用 generate_reponse 函数调用它,如响应变量中所示。

💡 请注意,默认情况下,此函数最多返回 350 个令牌作为输出;这就是为什么我们添加了 max_tokens 参数并将其增加到 1000,因为我们的大多数输出​​都会有点长。

然后,我们获取生成的响应并将其保存在 response.txt 文件中。输出将如下所示:

输出由十个线程组成,如果我想向你展示整个过程,那么篇幅就太长了。无论如何,我在这里的目的是向你展示它的工作原理。

现在让我们通过将 YouTube 视频转换为博客文章来尝试另一个示例。

为此,我们必须更改输入和我们正在使用的提示。

我将选择我的 YouTube 频道中的视频作为输入。
​​
这是编辑后的代码行:

file = load_content("https://www.youtube.com/watch?v=DAmL-b_c85c")

要更改提示,请编辑以下代码行:

final_prompt = text_to_blog_post.format(input = file.content)

让我们运行它并查看输出:

如你所见,格式已更改为博客文章,输入现在是 YouTube 视频的记录。

以下是我们上面使用的代码和 resources.py 文件,其中包含我的一些强力提示: 基础代码 , 提示 。

3、策略 2:主要代码

现在,是时候进行真正的交易了,你一直在等待什么!

在此策略中,只需单击一下,就可以将内容重新用于三个不同的内容,所有内容都格式化为 json 输出,这将使它们更易于访问。

使用此方法不需要新资源;只需要更新的代码。它在这里:

import json
from SimplerLLM.tools.generic_loader import load_content
from SimplerLLM.language.llm import LLM, LLMProvider
from resources import text_to_x_thread, text_to_summary, text_to_newsletter, format_to_json

llm_instance = LLM.create(provider=LLMProvider.OPENAI, model_name="gpt-4o")

#This can take a youtube video link, a blog post link, a csv file, etc... as input too 
file = load_content("https://learnwithhasan.com/create-ai-agents-with-python/") 

#Getting the 3 inputs
x_prompt = text_to_x_thread.format(input = file.content) 
newsletter_prompt = text_to_newsletter.format(input = file.content) 
summary_prompt = text_to_summary.format(input = file.content) 

#Generating the 3 types of social posts
x_thread = llm_instance.generate_response(prompt = x_prompt, max_tokens=1000)
with open("twitter.txt", "w", encoding='utf-8') as f:
    f.write(x_thread)

newsletter_section = llm_instance.generate_response(prompt = newsletter_prompt, max_tokens=1000)
with open("newsletter.txt", "w", encoding='utf-8') as f:
    f.write(newsletter_section)

bullet_point_summary = llm_instance.generate_response(prompt = summary_prompt, max_tokens=1000)
with open("summary.txt", "w", encoding='utf-8') as f:
    f.write(bullet_point_summary)

#Converting them into json format
final_prompt = format_to_json.format(input_1 = x_thread, 
                                     input_2 = newsletter_section, 
                                     input_3 = bullet_point_summary) 

response = llm_instance.generate_response(prompt = final_prompt, max_tokens=3000)

# Validate and write JSON with indentation for readability
try:
    json_data = json.loads(response)
    with open("Json_Result.json", "w", encoding='utf-8') as f:
        json.dump(json_data, f, ensure_ascii=False, indent=4)
    print("JSON saved successfully.")
except json.JSONDecodeError as e:
    print("Error in JSON format:", e)
    with open("Json_Result.json", "w", encoding='utf-8') as f:
        f.write(response) 

此代码的结构与上面的代码非常相似;我们在这里也使用相同的函数。

主要区别在于,我们不会只生成 1 种类型的内容,而是使用 OpenAI 的 GPT 模型将所选输入重新用于三种不同类型的内容。我们将每个输出保存在具有相应名称的 TXT 文件中。

💡 请注意,你也可以在此处编辑提示以获得不同的结果,如我上面所示。
​​
然后,在获得三个输出后,我们将使用强力提示将它们合并为一个 json 输出,并将它们保存在 json 文件中。

但是,GPT 的响应并不总是有效并生成正确的 json 格式。这就是为什么我添加了一个 try-except 语句,以便如果它不起作用,它会打印代码并将其保存为原始文本。

我无法详细介绍如何修复此问题,但你可以查看这篇博文,它肯定会帮助你提高结果。

现在,让我们尝试一下,看看我们能得到什么!

如你所见,创建了四个新文件;其中 3 个包含单独生成的三部分内容,还有一个 json 文件,其中包含最终的 json 格式输出。

随意使用提示,你将获得符合你偏好的新结果。

👉 代码可以从 这里下载。

4、为工具创建 UI

该脚本在终端中运行完美,但我们为什么不构建一个简单、用户友好的界面来更轻松地运行代码呢?

此外,对编码一无所知的人将能够在完全不与代码交互的情况下使用它。

如果我们将 streamlit 与下面的强力提示结合起来,这非常简单:

Act as an expert Python programmer specialized in building user-friendly UIs using Streamlit.  Create a Streamlit UI for the provided script. 
Make sure to comment all the code to enhance understanding, particularly for beginners. 
Choose the most suitable controls for the given script and aim for a professional, user-friendly interface.  
The target audience is beginners who are looking to understand how to create user interfaces with Streamlit. 
The style of the response should be educational and thorough. Given the instructional nature, comments should be used extensively in the code to provide context and explanations.  
Output: Provide the optimized Streamlit UI code, segmented by comments explaining each part of the code for better understanding.  
Input: Provided script: {your input script}

此提示是高级提示库的一部分,该库每月都会更新新的特殊提示。

无论如何,我使用了该提示,并在几秒钟内用 Streamlit 为我的工具创建了一个 UI。这是它生成的代码:

import streamlit as st
import json
from SimplerLLM.tools.generic_loader import load_content
from SimplerLLM.language.llm import LLM, LLMProvider
from resources import text_to_x_thread, text_to_summary, text_to_newsletter, format_to_json

llm_instance = LLM.create(provider=LLMProvider.OPENAI, model_name="gpt-4o")

st.title("Content Generation With A Single Click")

url = st.text_input("Enter the URL or File Name of your input:")

if st.button("Generate Content"):
    if url:
        try:
            file = load_content(url)

            x_prompt = text_to_x_thread.format(input=file.content)
            newsletter_prompt = text_to_newsletter.format(input=file.content)
            summary_prompt = text_to_summary.format(input=file.content)

            x_thread = llm_instance.generate_response(prompt=x_prompt, max_tokens=1000)
            newsletter_section = llm_instance.generate_response(prompt=newsletter_prompt, max_tokens=1000)
            bullet_point_summary = llm_instance.generate_response(prompt=summary_prompt, max_tokens=1000)

            st.subheader("Generated Twitter Thread")
            st.write(x_thread)
            st.markdown("---")

            st.subheader("Generated Newsletter Section")
            st.write(newsletter_section)
            st.markdown("---")

            st.subheader("Generated Bullet Point Summary")
            st.write(bullet_point_summary)
            st.markdown("---")

            final_prompt = format_to_json.format(
                input_1=x_thread, 
                input_2=newsletter_section, 
                input_3=bullet_point_summary
            )
            response = llm_instance.generate_response(prompt=final_prompt, max_tokens=3000)
            
            try:
                json_data = json.loads(response)
                st.markdown("### __Generated JSON Result__")
                st.json(json_data)
                st.download_button(
                    label="Download JSON Result",
                    data=json.dumps(json_data, ensure_ascii=False, indent=4),
                    file_name="Json_Result.json",
                    mime="application/json"
                )
            except json.JSONDecodeError as e:
                st.error(f"Error in JSON format: {e}")
                st.write(response)
        except Exception as e:
            st.error(f"An error occurred: {e}")
    else:
        st.warning("Please enter a valid URL.")

上面的代码会生成你选择的三种类型的内容,并显示它们,最后还会显示带有下载按钮的 json 结果,只需单击一下即可下载结果。

现在,要运行代码,你需要将代码保存为 ui.py,打开一个新终端并运行以下命令:

streamlit run ui.py

当然,你可以更改文件的名称,但在运行它时你还需要将其更改为新文件的名称。

运行它后,将打开以下网页:

如你所见,它使用起来非常简单直接。只需输入链接或文件名,然后单击生成按钮即可获得所有结果。

5、奖励:将此工具变成赚钱机器

不要只将该工具保留供你使用,而是让人们使用它并向他们收取每次使用的费用。

让我解释一下:

如果你在 WordPress 网站上为你的工具构建了一个简洁的用户界面(最简单的事情之一),你可以构建一个积分系统,人们会购买积分来使用这些工具。

这是我在他的工具页面上使用的技术,他每次使用都会向人们收取一定数量的积分,具体取决于他们使用的工具。

如果你想了解如何克隆他正在使用的相同策略和商业模式,请查看这个指南,它教你如何在 WordPress 上构建 SAAS!


原文链接:基于LLM的内容再利用 - BimAnt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2201636.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于SpringBoot+Vue+Uniapp的仓库点单小程序的详细设计和实现

2. 详细视频演示 文章底部名片,联系我获取更详细的演示视频 3. 论文参考 4. 项目运行截图 代码运行效果图 代码运行效果图 代码运行效果图 代码运行效果图代码运行效果图 代码运行效果图 5. 技术框架 5.1 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发…

毕业设计 | Ruff开发板 + 华为云IoT物联网平台,实现家中温度、湿度、二氧化碳、PM2.5、甲醛监控分析...

基于温湿度、空气质量传感器实现温度、湿度、二氧化碳、PM2.5、甲醛环境数据实时监测。 硬件清单 我们采用 Ruff 开发板,串口连接温湿度传感器 DHT11 和空气质量传感器 SDS011,每5分钟采集一次数据,通过MQTT协议发送到华为云 IoT 物联网平台&…

QRTCN区间预测 | Matlab实现QRTCN时间卷积神经网络分位数回归区间预测

区间预测 | Matlab实现QRTCN时间卷积神经网络分位数回归区间预测 目录 区间预测 | Matlab实现QRTCN时间卷积神经网络分位数回归区间预测预测效果基本介绍模型特性程序设计参考资料预测效果 基本介绍 Matlab实现QRTCN时间卷积神经网络分位数回归区间预测 QRTCN(Quantile Regres…

Java数据类型常量

目录 一、数据类型 1.1分类 1.2关键字&内存占用&范围 1.3包装类 1.4说明 1.5类型转换 1.6类型提升 二、常量 2.1java中的常量 2.2定义常量 2.3分类 一、数据类型 1.1分类 1.2关键字&内存占用&范围 数据类型关键字内存占用范围字节型byte1字节-128…

【学术会议征稿】2024年信号处理与神经网络应用国际学术会议(SPNNA 2024)

2024年信号处理与神经网络应用国际学术会议(SPNNA 2024) 2024 International Conference on Signal Processing and Neural Network Applications 2024年信号处理与神经网络应用国际学术会议(SPNNA 2024)将于2024年12月13日至15…

scratch星际穿越 2024年9月中国电子学会图形化编程 少儿编程 scratch编程等级考试一级真题和答案解析

目录 scratch星际穿越 一、题目要求 1、准备工作 2、功能实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 1、思路分析 2、详细过程 四、程序编写 五、考点分析 六、 推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程 5、…

DevExpress WinForms中文教程:Data Grid - 如何完成数据输入验证?

本教程介绍DevExpress WinForm的Data Grid控件是如何利用网格组件完成数据输入验证的。 P.S:DevExpress WinForms拥有180组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序…

Python酷库之旅-第三方库Pandas(140)

目录 一、用法精讲 631、pandas.Timestamp类 631-1、语法 631-2、参数 631-3、功能 631-4、返回值 631-5、说明 631-6、用法 631-6-1、数据准备 631-6-2、代码示例 631-6-3、结果输出 632、pandas.Timestamp.asm8属性 632-1、语法 632-2、参数 632-3、功能 632…

java类和对象_成员变量方法修饰符局部变量this关键字-cnblog

java类和对象 成员变量 权限修饰符 变量类型 变量名; 成员变量可以是任意类型,整个类是成员变量的作用范围 成员变量 成员方法 权限修饰符 返回值类型 方法名() 成员方法可以有参数,也可以有返回值,用return声明 权限修饰符 private 只能在本类…

IDEA必装的插件:Spring Boot Helper的使用与功能特点

在IntelliJ IDEA中,Spring Boot Helper插件是一个非常实用的工具,可以帮助我们更快速地创建和管理Spring Boot项目。以下是Spring Boot Helper插件的详细介绍和使用方法: 激活码地址: 点击获取 一、安装Spring Boot Helper插件 1 打开Intell…

如何设计三极管放大电路?

设计放大电路 分压式串联负反馈放大电路 可以看下面这个视频 , 讲得更加详细 366-单管放大电路偏置电阻的计算,看完自己也会设计一个_哔哩哔哩_bilibili 计算流过电阻Rb2的电流过程中,工程当中常发现Rb2上的电流是Ib的5倍 , 因此由基尔霍夫电流定律也能知道流过R…

Java的基础概念和常识(二)

什么是字节码?采用字节码的好处是什么? 字节码(Byte-code)是一种中间形式的代码,是源代码编译后生成的一种低级表示,通常是在编译阶段生成的。在 Java 中,JVM 可以理解的代码就叫做字节码&…

K8s(学习笔记)

swap分区是什么呀? 什么是ipvs呀? yaml是什么呀??? p20看不下去了!!!

ansible 流程控制

目录 1.流程控制 2.handlers触发器 2.1使用handlers案例 3.when 判断 3.1 案例1 用于给task设置条件 满足或者不满足运行对应模块 3.2 案例2 如果系统是centos则安装sl,cowsay 如果是unbantu则安装cmatrix 4.循环 4.1案例 1.流程控制 hand…

飞腾CPU技术发展分析

飞腾CPU剖析 CPU:信创根基,国之重器 国产CPU市场呈现三大领军阵营:x86、ARM以及其他创新架构。鲲鹏与飞腾在ARM阵营中引领风潮,依托ARM技术授权研发高性能处理器;海光与兆芯则以x86架构为基石,深入挖掘其潜…

图论day56|广度优先搜索理论基础 、bfs与dfs的对比(思维导图)、 99.岛屿数量(卡码网)、100.岛屿的最大面积(卡码网)

图论day56|广度优先搜索理论基础 、bfs与dfs的对比(思维导图)、 99.岛屿数量(卡码网)、100.岛屿的最大面积(卡码网)) 广度优先搜索理论基础bfs与dfs的对比(思维导图)&…

Spring Boot Starter Parent介绍

引言 spring-boot-starter-parent 是一个特殊的项目,为基于 Spring Boot 的应用程序提供默认配置和默认依赖。 在本 Spring Boot 教程中,我们将深入了解所有 Spring Boot 项目内部使用的 spring-boot-starter-parent 依赖项。我们将探讨此依赖项所提供…

基于jmeter+perfmon的稳定性测试记录

1. 引子 最近承接了项目中一些性能测试的任务,因此决定记录一下,将测试的过程和一些心得收录下来。 说起来性能测试算是软件测试行业内,有些特殊的部分。这部分的测试活动,与传统的测试任务差别是比较大的,也比较依赖…

用Python实现运筹学——Day 12: 线性规划在物流优化中的应用

一、学习内容 线性规划在物流优化中可以用于解决诸如配送路径优化、货物运输调度等问题。配送中心的路径优化问题本质上是寻找一条最优路径,在满足需求点的需求条件下,最小化配送的总运输成本或时间。常见的物流优化问题包括: 配送中心的货…