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

你觉得怎么样呢?

相关推荐
ForRunner1231 小时前
使用 Python 和 Selenium 解决 hCaptcha:完整指南
人工智能·爬虫·python·自动化
铭瑾熙1 小时前
深度学习之RNNs
人工智能·深度学习
Moonquake_www1 小时前
机器学习———特征工程
人工智能·机器学习
pen-ai2 小时前
【机器学习】29. 关联规则挖掘(Association Rule Mining)
人工智能·算法·机器学习·数据挖掘
钰见梵星2 小时前
深度神经网络
人工智能·神经网络·dnn
Hello.Reader2 小时前
深入解析生成对抗网络(GAN)
人工智能·神经网络·生成对抗网络
醒了就刷牙2 小时前
Bottom-Up Attention(借助CNN)
人工智能·神经网络·cnn
winstongit3 小时前
ROS2 Humble 机器人建模和Gazebo仿真
机器人
虞书欣的63 小时前
Python小游戏27——飞翔的小鸟
开发语言·人工智能·游戏·pycharm·pygame