《生成式 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

你觉得怎么样呢?

相关推荐
可乐+冰02 小时前
Android 编写高斯模糊功能
android·人工智能·opencv
嘀咕博客3 小时前
SynClub-百度在海外推出的AI社交产品
人工智能·百度·ai工具
AI算法工程师Moxi3 小时前
什么是迁移学习(transfer learning)
人工智能·机器学习·迁移学习
空白到白4 小时前
机器学习-KNN算法
人工智能·算法·机器学习
aliedudu4 小时前
机器学习概述
人工智能·机器学习
love you joyfully4 小时前
循环神经网络——pytorch实现循环神经网络(RNN、GRU、LSTM)
人工智能·pytorch·rnn·深度学习·gru·循环神经网络
袁庭新5 小时前
AI如何辅助创业?年轻人一定要创业
人工智能·创业
GIS开发特训营5 小时前
【智慧城市】2025年中国地质大学(武汉)暑期实训优秀作品(2):智慧城市西安与一带一路
人工智能·信息可视化·智慧城市
飞哥数智坊5 小时前
扣子实战第19讲:Coze零代码打造“新生入学百事通”,辅导员都说好
人工智能·coze
上海控安6 小时前
上海控安:GB 44495-2024《汽车整车信息安全技术要求》标准解读和测试方案
大数据·人工智能·汽车