V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
jsjcjsjc
V2EX  ›  问与答

关于 AI 生成英语例句的问题

  •  
  •   jsjcjsjc · 9 天前 · 505 次点击

    背单词啊背单词,还是例句靠谱些,准备自己用 AI 生成考虑单词例句,有两个问题

    1. 我的 prompt 似乎没办法让 AI 生成完整的清单,不确定是不是 AI 模型不支持这么大的,丢 4000 单词进去似乎不行,200 个似乎也不行.
    2. 有没有推荐的模型干这个活? 感谢

    我的 prompt

    # 角色
    你是一名中英文双语教育专家,具备深厚的语言学知识和教学经验。具有 4 万多的词汇量,并有惊人的阅读量,可以轻松根据英文单词创建合适的例句,拥有帮助将中文视为母语的用户理解和记忆英语单词的专长,请根据用户提供的英语单词完成下列任务。
    # 任务
    ## 例句生成:
    - 根据用户提供英语单词生成英文例句。
    - 有能力生成上百句英文例句,将用户提供的单词全部包含在这些例句中。
    - 例句包含的单词不要超过 39 个。
    - 每个例句中至少包含 5 个用户提供的单词,可以是单词的其他形态。
    - 每个例句中尽量多的使用用户提供的单词,以减少例句的数量。
    - 确保例句的语法正确,自然流畅,尽可能使用简单语法。
    - 如果用户提供的英文单词中有多个常用释义,可以将此单词用于多个例句中以表达其不同的含义。
    - 使用 markdown 语法将需要学习的英文单词高亮。
    - 请检查例句 3 次,确认没有语法错误。
    - 生成的例句中必须包含用户提供的所有单词,如果没有全部包含,请继续按照要求生成例句。
    
    ## 例句翻译:
    - 对于每个例句,提供对应的中文释义。
    
    ## 单词解释:
    - 提供单词在例句中的简明释义。
    - 提供单词的音标,音标需要使用 DJ 音标,以下是所有音标:iː ɪ e æ ɑː ɒ ɔː ʊ uː ʌ ɜːr ər eɪ aɪ oʊ aʊ ɔɪ p b t d k ɡ tʃ dʒ f v θ ð s z ʃ ʒ h m n ŋ l r j w ,如果你返回的音标不在其中,那一定是版本没用对,请检查是否符合版本要求。
    
    ## 输出格式如下:
    **例句:**She **lacked** the **necessary** resources to **complete** the project, leading to a **failure** **despite** her **efforts**.
    **翻译:**她缺乏完成项目所需的资源,尽管努力仍导致失败。
    **单词:**
    **lack**/læk/ - v. 缺乏,缺少
    **necessary**/ˈnesəsərɪ/ - adj. 必要的,必需的
    **complete**/kəmˈpliːt/ - v. 完成
    **failure**/ˈfeɪljər/ - n.失败
    **despite**/dɪˈspaɪt/ - prep. 尽管
    **effort**/ˈefərt/ - n. 努力
    
    
    13 条回复    2025-01-25 11:33:52 +08:00
    InkStone
        1
    InkStone  
       9 天前
    这不是模型的问题,而是这种长上下文的任务就不适合放在一个 prompt 中完成,最好拆分成多次交互。

    反正你的例句之间也没有相互依赖,完全可以并行完成。
    jsjcjsjc
        2
    jsjcjsjc  
    OP
       9 天前
    @InkStone 并行完成时啥意思? 所以就是每次丢个 50 个例句进去?
    感谢
    InkStone
        3
    InkStone  
       9 天前   ❤️ 1
    @jsjcjsjc 对呀,每个请求把你的 prompt 发一遍,丢前置 prompt+需要生成例句的单词让它生成例句,然后把所有生成结果汇总一下就好了。
    jsjcjsjc
        4
    jsjcjsjc  
    OP
       9 天前
    @InkStone 感谢,我还是 5000 单词全部丢进去,一路"请继续",似乎也一样
    JLVe
        5
    JLVe  
       9 天前
    做个 agent 吧,单词作为知识库
    Liftman
        6
    Liftman  
       9 天前   ❤️ 1
    楼上+1 。你这个数量不可能的。走 agent 或者你让 gpt 写一个脚本多线程的从你的词库里面同时并发请求汇总到一个文本里面去(我之前有一大堆文本,需要设计针对这个文本每句话的问题,就反向让 gpt 提问)

    而且我设计题库的时候,试过像这种大数量的一致性输出,早期 gpt 那会的时候 50 题就不稳了。后来好一点了。我也只敢 100 题一次。
    mumbler
        7
    mumbler  
       9 天前
    每次只生成 30 个句子,句子生成后放 prompt 里继续生成

    模型用 gemini-exp-1206
    Vegetable
        8
    Vegetable  
       9 天前
    你完全可以把你的帖子内容拿出来给 AI ,让他帮你生成一个调用 API 生成例句的脚本。你运行脚本就行了。
    Donaldo
        9
    Donaldo  
       9 天前
    歪个楼,例句的话没必要生成吧,随便一个词典里不就有不少么?
    musi
        10
    musi  
       9 天前
    我也在思考这个问题,我想的是能不能从影剧台词中提取出相关的台词桥段
    jsjcjsjc
        11
    jsjcjsjc  
    OP
       7 天前
    @Donaldo 关键是这个"每个例句中至少包含 5 个用户提供的单词,可以是单词的其他形态。" 希望尽可能少的例句包含所有的单词
    jsjcjsjc
        12
    jsjcjsjc  
    OP
       7 天前
    @JLVe 有相关的教程吗? 我刚查看了一下 agent 的介绍,再这个案例上没明白应该如何进行逻辑.

    生成例句,是否包含所有单词,继续生成?
    jsjcjsjc
        13
    jsjcjsjc  
    OP
       5 天前
    @Liftman Agent 没明白,不过代码是可以的
    可以的,AI 写的代码,可以使用
    ```
    import os
    import requests
    import time
    import warnings
    from requests.packages.urllib3.exceptions import InsecureRequestWarning

    # 禁用不安全请求的警告
    warnings.simplefilter('ignore', InsecureRequestWarning)

    # API 配置
    API_URL = "https://api.oaibest.com/v1/chat/completions"
    API_KEY = "key"

    def main():
    # 读取 prompt
    try:
    with open("prompt.txt", "r", encoding="utf-8") as f:
    prompt = f.read().strip()
    except FileNotFoundError:
    print("Error: prompt.txt not found!")
    return

    # 获取所有 input 文件并按名称排序
    input_files = sorted([f for f in os.listdir()
    if f.startswith("input") and f.endswith(".txt")])

    if not input_files:
    print("No input files found!")
    return

    # 处理每个 input 文件
    for input_file in input_files:
    print(f"Processing {input_file}...")

    # 读取 input 文件内容
    try:
    with open(input_file, "r", encoding="utf-8") as f:
    input_text = f.read().strip()
    except Exception as e:
    print(f"Error reading {input_file}: {e}")
    continue

    # 将 prompt 和 input_text 合并到一个消息中
    combined_message = f"{prompt}\n\n{input_text}"

    # 准备请求数据
    data = {
    "model": "o1-mini",
    "messages": [
    {"role": "user", "content": combined_message}
    ]
    }

    headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
    }

    try:
    # 发送请求,禁用 SSL 验证
    response = requests.post(API_URL, json=data, headers=headers, verify=False)

    if response.status_code == 200:
    # 解析响应
    result = response.json()["choices"][0]["message"]["content"]

    # 将结果追加到 output.txt
    with open("output.txt", "a", encoding="utf-8") as f:
    f.write(f"\n=== Response for {input_file} ===\n")
    f.write(result)
    f.write("\n")

    print(f"Successfully processed {input_file}")
    else:
    print(f"Error processing {input_file}: {response.status_code} - {response.text}")

    except requests.exceptions.RequestException as e:
    print(f"Request error for {input_file}: {e}")
    except Exception as e:
    print(f"Unexpected error processing {input_file}: {e}")

    # 在处理下一个文件前等待 1 秒
    time.sleep(1)

    print("\nAll files processed. Results saved in output.txt")

    if __name__ == "__main__":
    main()

    ```
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1906 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 15:09 · PVG 23:09 · LAX 07:09 · JFK 10:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.