《生成式 AI》课程 第3講 CODE TASK 任务3:自定义任务的机器人

课程

《生成式 AI》课程 第3講:訓練不了人工智慧嗎?你可以訓練你自己-CSDN博客

我们希望你创建一个定制的服务机器人。

您可以想出任何您希望机器人执行的任务,例如,一个可以解决简单的数学问题的机器人0

一个机器人,它总是输出用户输入单词的反义词

以下是用 API2D 调用 openAI 'model': 'gpt-4o-mini' url = "https://openai.api2d.net/v1/chat/completions"

复制代码
import requests
import gradio as gr
import json


def get_response(input_text, prompt_text, chat_history):  # 修改函数定义,增加prompt_text参数
    """
    根据用户输入、额外的提示文本以及已有的对话历史获取语言模型的回复,并更新对话历史。
    :param input_text: 当前用户输入的文本内容。
    :param prompt_text: 额外的提示文本内容,比如固定的任务引导等。
    :param chat_history: 之前的对话历史,是一个包含二元组的列表,每个二元组分别是 (用户消息, 模型回复)。
    :return: 返回更新后的对话历史,包含本次交互后的结果以及包含模型相关信息及回复内容和token数量信息的格式化字符串,若JSON解析出错则返回相应错误提示以及更新后的对话历史。
    """
    url = "https://openai.api2d.net/v1/chat/completions"
    headers = {
        'Content-Type': 'application/json',
        'Authorization': 'Bearer fk2****'  # <-- 把 fkxxxxx 替换成你自己的 Forward Key,注意前面的 Bearer 要保留,并且和 Key 中间有一个空格。
    }
    messages = []
    # 将之前的对话历史添加到消息列表中,格式需符合API要求
    for user_msg, bot_msg in chat_history:
        messages.append({"role": "user", "content": user_msg})
        messages.append({"role": "assistant", "content": bot_msg})
    # 添加当前用户输入的消息以及额外的提示文本消息(按照合适的格式添加,这里示例为添加在开头)
    messages.append({"role": "user", "content": prompt_text + " " + input_text})

    data = {
        'model': 'gpt-4o-mini',  # 'gpt-3.5-turbo',
        'messages': messages
    }
    response = requests.post(url, headers=headers, json=data)
    status_code = response.status_code
    try:
        json_data = response.json()
        # 提取模型名称
        model_name = json_data.get('model', '未知模型')
        # 提取助手回复的内容
        assistant_content = json_data.get('choices', [])[0].get('message', {}).get('content', '无回复内容')
        # 提取各类token数量
        prompt_tokens = json_data.get('usage', {}).get('prompt_tokens', 0)
        completion_tokens = json_data.get('usage', {}).get('completion_tokens', 0)
        total_tokens = json_data.get('usage', {}).get('total_tokens', 0)

        # 将本次的用户输入和模型回复添加到对话历史中
        chat_history.append((input_text, assistant_content))

        return chat_history, f"模型: {model_name}\n回复内容: {assistant_content}\n提示词token数: {prompt_tokens}\n回复内容token数: {completion_tokens}\n总token数: {total_tokens}"
    except json.JSONDecodeError:
        # 即使解析JSON出错,也更新对话历史(可以为空回复等情况)
        chat_history.append((input_text, "解析JSON出错"))
        return chat_history, "解析JSON出错"


# 假设这里的prompt_for_task是你预先定义好的提示文本内容,可根据实际情况赋值
prompt_for_task = "Give me the antonym of the following words"
with gr.Blocks() as demo:
    chatbot = gr.Chatbot()
    user_input = gr.Textbox(lines=2, placeholder="请输入你想发送的内容")
    state = gr.State([])  # 创建一个状态变量,用于存储对话历史,初始化为空列表
    prompt_textbox = gr.Textbox(label="Prompt", value=prompt_for_task, visible=True)  # 添加Prompt文本框,设置为可见

    # 通过按钮点击事件触发获取回复和更新对话历史等操作
    send_button = gr.Button("发送")
    send_button.click(
        fn=get_response,
        inputs=[user_input,prompt_textbox, state],
        outputs=[chatbot, gr.Textbox(label="解析后的响应内容")]
    )

    demo.launch(debug=True)

输出如下

gpt4 很厉害的翻译了英文 并且中输出

何处无芳草 "Where is there no fragrant grass?" ==>

反义词 无处有刺 nowhere has thorns

你觉得怎么样呢?

相关推荐
云票5 小时前
从技术视角看AI采购:多智能体、流程重设计与自动化的落地边界
运维·人工智能·自动化
Zentceh5 小时前
PixelClean 这类 AI 降噪算法是怎么工作的?从 RAW 域到 GAN 色彩重建的技术拆解
图像处理·人工智能·科技·算法·计算机视觉·车载系统·智能硬件
2601_962203515 小时前
2026主流AI办公智能体对比:KuWork、安捷AI、bit-Agent、青虹AI、Team Claw怎么选
人工智能
Zwawa6 小时前
黑盒与白盒:人是怎么把世界装进口袋的
人工智能·嵌入式
198******126346 小时前
Work Agent深度解读:AI长程任务如何重塑自动化工作模式
人工智能
天天被压力6 小时前
【Python量化实战宝典 #03】指数与板块行情接口全拆解:大盘·行业·概念一键取(Python 可跑)
java·人工智能·python
云和数据.ChenGuang6 小时前
Spring AI 对接 LangGraph:构建企业级智能体工作流实战
java·人工智能·spring boot·后端·spring
Lalolander6 小时前
灵基Lingee怎么下载安装?Mac 与 Win 详细指南
大数据·人工智能·科技·macos·金蝶灵基
智圣新创016 小时前
从数据要素流通到服务体验升级 高校全域数据治理长效落地的行业实践参考
大数据·人工智能
没有梦想的咸鱼185-1037-16636 小时前
从通量数据到SCI论文——AI-R语言生态系统碳水热通量及其机制分析与论文
开发语言·人工智能·数据分析·r语言