使用 OpenAI API 创建社交媒体帖子生成器

目前人工智能的存在就像一把双刃香蕉,一方面,许多人对其不道德的使用持谨慎态度。但另一方面,人工智能可以提供很多好处,帮助很多人加快工作速度。

在这篇文章中,我们将通过在社交媒体上创建帖子生成器来创建一个使用人工智能的案例​​研究示例。该生成器的目的是帮助个人或企业提供可用于帮助企业或个人品牌塑造的帖子灵感。

准备文件夹和要求

我们将在该项目中使用的库是openaistreamlit,如果未安装它们,我们可以在包管理器中下载它们pipconda.

我们将创建的项目文件夹结构如下

复制
复制
- postgenerator
|--app.py
|--gpt.py

为了更容易维护,这里我们将文件分为app.pygpt.py,这些文件app.py包含我们的 Streamlit 应用程序的 UI 以及gpt.py我们将创建的应用程序的逻辑。

制作gpt.py

里面的代码app.py如下:

复制
复制
import openai

def generate_post(api_key, platform, topic, temperature, length, use_hashtags, use_emojis):
    try:
        client = openai.OpenAI(api_key=api_key)
        prompt = f"Generate a {length} social media post for {topic} in {platform}."

        if use_hashtags:
            prompt += " Include relevant hashtags."
        else:
            prompt += " Do not include hashtags."
        if use_emojis:
            prompt += " Include appropriate emojis."
        else:
            prompt += " Do not include emojis."
        response = client.chat.completions.create(
            model="gpt-4o-mini",
            messages=[
                {"role": "system", "content": "You are a social media expert with 20 years experience on Cupywriting"},
                {"role": "user", "content": prompt}
            ],
            max_tokens=1000,
            temperature=temperature  
        )
        post = response.choices[0].message.content
        return post
    except openai.AuthenticationError:
        return "Invalid API key"
    except Exception as e:
        return str(e)

在此文件中,我们将创建一个名为 的函数generate_post。该函数将接受七个参数,即api_keyplatformtopictemperaturelengthuse_hashtagsuse_emojis

因为我们将向 OpenAI API 发出请求,所以我们用错误处理来包装我们的代码try-except。目标是当出现错误时,希望我们的应用程序不会崩溃。

client接下来我们从 openai.OpenAI创建一个对象,在这里api_key我们输入的内容被验证。然后创建一个变量prompt,其中包含我们将给出的命令的模板。

参数use_hashtaguse_emojis工作通过提供额外的提示来确定主题标签和表情符号是否将包含在我们将制作的帖子中。

然后我们容纳response该方法,这里我们以, , , 和client.chat.completions.create的形式输入参数。使用的模型是Openai当前最佳模型的小版本。modelmessagesmax_tokenstemperaturegpt-4o-mini

参数messages为模型提供有关分配给模型的角色以及用户输入的提示的说明。这里我们告诉system prompt模特,他是一位社交媒体专家,在文案领域也有丰富的经验。

该参数max_tokens设置将生成的令牌的最大数量。这里我们输入1000,因为我们将把创建的帖子的长度设置为三类。

此外,调节模型响应创造力的参数temperature,越高则越有创造力,反之亦然。

整个函数generate_post将返回post模型对用户给出的提示的响应。

制作app.py

gpt.py创建逻辑后,我们继续使用 Streamlit 创建显示。整个代码app.py如下:

复制
复制
import streamlit as st
from gpt import generate_post

def main():
    st.title("Social Media Post Generator")

    st.sidebar.title("Configuration")
    api_key = st.sidebar.text_input("Enter your OpenAI API key:", type="password")

    if api_key:
        topic = st.text_input("What is your post for?")

        platform = st.selectbox("Platform:", ["Facebook", "Instagram", "Twitter", "LinkedIn"])

        temperature = st.slider("Creativity Level (temperature):", min_value=0.0, max_value=1.0, value=0.5, step=0.05)

        length = st.selectbox("Choose the length:", ["Short", "Medium", "Long"])

        use_hashtags = st.radio("Include hashtags?", ("Yes", "No"))
        use_emojis = st.radio("Include emojis?", ("Yes", "No"))

        use_hashtags = use_hashtags == "Yes"
        use_emojis = use_emojis == "Yes"

        # Generate Post Button
        if st.button("Generate Post"):
            if topic:
                post = generate_post(api_key, platform, topic, temperature, length, use_hashtags, use_emojis)
                if post == "Invalid API key":
                    st.error("Invalid API key. Please check and try again.")
                elif "error" in post.lower():
                    st.error(f"An error occurred: {post}")
                else:
                    st.success("Generated Post:")
                    st.write(post)
            else:
                st.warning("What is your post for?")
    else:
        st.warning("Please enter your OpenAI API key in the sidebar to generate a post.")

if __name__ == "__main__":
    main()

总的来说,我们创建的 UI 由主显示和侧边栏组成。为了使用这个应用程序,用户必须首先输入各自的openAI。侧边栏的功能是容纳用户使用的 api 键。

用户可以输入的输入有topicplatformtemperaturelengthuse_hashtaguse_emojis

主题采用输入文本的形式,包含我们将生成的帖子的目的。接下来,以包含值选项的选择框的形式输入platform和。length对于平台,我们可以选择 Facebook、LinkedIn、Twitter 或 LinkedIn。同时,我们可以选择短、中、长长度。

该参数temperature采用滑块的形式,范围在 0 到 1 之间。最后use_hashtag采用use_emojis单选按钮的形式。

最后,有一个按钮将调用我们之前在文件中创建的Generate Post函数。传递的参数将根据已输入 Streamlit UI 的用户输入进行调整。generate_postgpt.py

运行应用程序 www.cqzlsb.com

要运行应用程序,我们可以streamlit run app.py在终端中运行命令。以下是应用程序运行时的样子。

为了进行实验,我会要求发一个帖子

雅加达市一家名为“Kebulimu”的阿拉伯餐厅

接下来尝试了三种参数组合:

  • 长度:短,标签:否,表情符号:否

  • 长度:中等,标签:是,表情符号:否

  • 长度:长,标签:是,表情符号:否

对于温度,我们将其设置为 0.75,目标平台是 Instagram。结果如下:

  1. 结果第一个参数的组合:

  1. 第二个参数的结果组合:

  1. 第三个参数的结果组合:

可以看到,提供的结果是符合我们指定的参数的。

闭幕式

从这个简单的项目中,我们可以了解给定提示对生成的输出的影响。目前,我们仍然依赖现有模型中的知识,可以通过使用检索增强生成(RAG)等技术添加我们自己文件中的知识来完成进一步的开发。

感谢您阅读这篇文章,希望它有用,并且不要厌倦继续学习!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值