You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于PaLM API的Medium文章生成器故障排查求助

基于PaLM API的Medium文章生成器故障排查

以下是你的代码中存在的核心问题及对应修复方案:

1. API端点错误

你使用的PALM_API_ENDPOINT不符合PaLM API(现Gemini API)的官方规范,正确的文本生成端点应为Google提供的域名:

PALM_API_ENDPOINT = "https://generativelanguage.googleapis.com/v1/models/text-bison-001:generateText"

2. 请求Payload格式不匹配API要求

PaLM API对请求结构有明确要求,你当前的payload字段命名和层级完全错误:

  • 原prompt字段需嵌套为prompt.text
  • temperature、max_tokens需放在generationConfig下,且max_tokens要改为maxOutputTokens

修正后的generate_medium_article函数payload示例:

payload = {
    "prompt": {
        "text": f"Write a Medium article on the topic {topic}."
    },
    "generationConfig": {
        "temperature": 0.7,
        "maxOutputTokens": 2000
    }
}

3. 响应解析逻辑错误

PaLM API的返回结果中,生成文本的存储路径并非generated_text,而是嵌套在candidates[0].output中,修正解析代码:

article = response.json()["candidates"][0]["output"]

4. API密钥硬编码风险

直接在代码中写入PALM_API_KEY存在密钥泄露风险,建议改用环境变量加载:

import os
PALM_API_KEY = os.getenv("PALM_API_KEY")

运行前需设置环境变量:Linux/macOS执行export PALM_API_KEY="你的密钥",Windows执行set PALM_API_KEY="你的密钥"

5. Hashtags生成的token限制过小

generate_hashtags中max_tokens设为5,完全无法生成有效数量的标签,建议调整为100左右,同时同步修正payload和响应解析逻辑。

完整修复后代码示例

import streamlit as st
import requests
import os

PALM_API_ENDPOINT = "https://generativelanguage.googleapis.com/v1/models/text-bison-001:generateText"
PALM_API_KEY = os.getenv("PALM_API_KEY")

def generate_medium_article(topic):
    """基于PaLM API生成指定主题的Medium文章"""
    if not PALM_API_KEY:
        st.error("请设置PALM_API_KEY环境变量")
        return ""

    payload = {
        "prompt": {
            "text": f"Write a Medium article on the topic {topic}."
        },
        "generationConfig": {
            "temperature": 0.7,
            "maxOutputTokens": 2000
        }
    }

    headers = {
        "Authorization": f"Bearer {PALM_API_KEY}"
    }

    try:
        response = requests.post(PALM_API_ENDPOINT, json=payload, headers=headers)
        response.raise_for_status()
        article = response.json()["candidates"][0]["output"]
        return article
    except Exception as e:
        st.error(f"请求失败:{str(e)}")
        return ""

def generate_hashtags(topic):
    """基于PaLM API生成指定主题的标签"""
    if not PALM_API_KEY:
        st.error("请设置PALM_API_KEY环境变量")
        return []

    payload = {
        "prompt": {
            "text": f"Generate 5-8 relevant hashtags for the topic {topic}, separated by commas."
        },
        "generationConfig": {
            "temperature": 0.7,
            "maxOutputTokens": 100
        }
    }

    headers = {
        "Authorization": f"Bearer {PALM_API_KEY}"
    }

    try:
        response = requests.post(PALM_API_ENDPOINT, json=payload, headers=headers)
        response.raise_for_status()
        hashtags_text = response.json()["candidates"][0]["output"]
        hashtags = [tag.strip() for tag in hashtags_text.split(",")]
        return hashtags
    except Exception as e:
        st.error(f"请求失败:{str(e)}")
        return []

def main():
    """StreamLit应用:生成Medium文章和标签"""
    st.title("Medium文章生成器与标签生成器")
    topic = st.text_input("输入文章主题:")

    if st.button("生成Medium文章"):
        if topic:
            article = generate_medium_article(topic)
            if article:
                st.write(article)
        else:
            st.warning("请输入主题")

    if st.button("生成标签"):
        if topic:
            hashtags = generate_hashtags(topic)
            if hashtags:
                st.write(hashtags)
        else:
            st.warning("请输入主题")

if __name__ == "__main__":
    main()

内容的提问来源于stack exchange,提问作者user22495083

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 23:57:17