简介
而在前面介绍React 推理提示的时候讲到了,目前的大语言模型本身不具备任何的执行能力,只具备理解自然语言的能力。
而如果要打造企业专属的人工智能助理,这个助理除了要具备“听懂人话的能力”,还需要具备执行动作的能力。要不然和问答机器人就没有任何区别了。所以本章节要完成的一个实践示例,就是让大模型具备“听懂人话”+“执行动作”的能力。
应用场景
智能助理由于具备“听懂人话”+“执行动作”的能力,所以其可拓展性是非常强的。理论上来说,所有的操作都能通过智能助理实现。比如如下几个场景。
- 智能查天气助理。
- 智能提 bug 助理。
- 其他操作场景。
只是越复杂的应用场景,中间牵涉到的工具和执行步骤也就越多越复杂。
实践演练
那么如果要实现打造企业专属人工智能助理,其实也是有多种方式的:
- openai 官方提供的 assistant。
- 人工智能应用框架,比如 LangChain。
assistant 目前相比于 LangChain。因为和 ChatGPT 强绑定,所以自然有一定的局限性。但是优点就是非常的简单且容易上手,如果可以接受 token 比较昂贵的消费。那么使用 assistant 也是一个非常好的选择。
而 LangChain 其灵活性则更强,会在后面的章节进行进一步的介绍。
使用官方的 assistant
点击查看官方 assistant 使用教程
假设我们现在的需求,是要让人工智能助理编造一条笑话,并且使用邮箱进行发送,那么整体流程应该如下:
对应代码:
import json
import os
import time
import requests
from openai import OpenAI
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))
# 一个发送邮件的函数工具
def send_email(quote, recipient="霍格沃兹测试开发学社@email.com"):
# Print the quote and recipient for debugging purposes
print(f"生成消息:\n {quote}\n\n发送邮件给: {recipient}")
# Return a success message
return "发送邮件给" + recipient
# 工具的提示词。为了让大模型更好理解工作的作用。
tools = [{
"type": "function",
"function": {
"name": "send_email",
"description": "Sends a quote via email",
"parameters": {
"type": "object",
"properties": {
"quote": {
"type": "string",
"description": "A generated funny quote"
}
},
"required": [
"quote"
]
}
}
}]
# 1. 创建助手
assistant = client.beta.assistants.create(
name="Wise Guy",
instructions="你是一位聪明的哲学家,会产生有趣的引言。",
model="gpt-3.5-turbo-1106",
tools=tools
)
# 2. 创建线程
thread = client.beta.threads.create()
# 3. 传入 prompt 并执行线程
message = client.beta.threads.messages.create(
thread_id=thread.id,
role="user",
content="创建一个笑话并且使用邮件发送",
)
# 4. 执行消息
run_res = client.beta.threads.runs.create(
thread_id=thread.id,
assistant_id=assistant.id, )
# 5. 等待回复
def wait_on_run(run):
while run.status == "queued" or run.status == "in_progress":
run = client.beta.threads.runs.retrieve(
thread_id=thread.id,
run_id=run.id,
)
print(f"执行的状态为:{run.status}")
time.sleep(0.5)
return run
# 6. 获取回复的结果
run_res = wait_on_run(run_res)
# 7. 如果回复的结果需要调用工具
if run_res.status == "requires_action":
# 提交工具的返回信息
tool_call = run_res.required_action.submit_tool_outputs.tool_calls[0]
name = tool_call.function.name
arguments = json.loads(tool_call.function.arguments)
print("等待返回的参数:", name)
print(f"函数参数为:{arguments}")
# 调用发送邮件工具
task = send_email(**arguments)
# 提交工具执行后的结果信息。
run = client.beta.threads.runs.submit_tool_outputs(
thread_id=thread.id,
run_id=run_res.id,
tool_outputs=[
{
"tool_call_id": tool_call.id,
"output": "done",
}
],
)
print("==========调用 chatgpt 执行内容")
run = wait_on_run(run)
print("==========获取返回信息")
print(client.beta.threads.messages.list(thread_id=thread.id, order="asc").model_dump_json(indent=2))
其他方式
- 结合 LangChain 等人工智能应用框架完成。
总结
- 企业专属人工智能助理的产品需求。
- 企业专属人工智能助理的实现方案。
- 使用官方 assistant 实现企业专属人工智能助理。
推荐学习
【霍格沃兹测试开发】7天软件测试快速入门带你从零基础/转行/小白/就业/测试用例设计实战
【霍格沃兹测试开发】最新版!Web 自动化测试从入门到精通/ 电子商务产品实战/Selenium (上集)
【霍格沃兹测试开发】最新版!Web 自动化测试从入门到精通/ 电子商务产品实战/Selenium (下集)
【霍格沃兹测试开发】明星讲师精心打造最新Python 教程软件测试开发从业者必学(上集)
【霍格沃兹测试开发】明星讲师精心打造最新Python 教程软件测试开发从业者必学(下集)
【霍格沃兹测试开发】精品课合集/ 自动化测试/ 性能测试/ 精准测试/ 测试左移/ 测试右移/ 人工智能测试
【霍格沃兹测试开发】腾讯/ 百度/ 阿里/ 字节测试专家技术沙龙分享合集/ 精准化测试/ 流量回放/Diff
【霍格沃兹测试开发】Pytest 用例结构/ 编写规范 / 免费分享
【霍格沃兹测试开发】JMeter 实时性能监控平台/ 数据分析展示系统Grafana/Docker 安装
【霍格沃兹测试开发】接口自动化测试的场景有哪些?为什么要做接口自动化测试?如何一键生成测试报告?
【霍格沃兹测试开发】面试技巧指导/ 测试开发能力评级/1V1 模拟面试实战/ 冲刺年薪百万!
【霍格沃兹测试开发】腾讯软件测试能力评级标准/ 要评级表格的联系我
【霍格沃兹测试开发】Pytest 与Allure2 一键生成测试报告/ 测试用例断言/ 数据驱动/ 参数化
【霍格沃兹测试开发】App 功能测试实战快速入门/adb 常用命令/adb 压力测试
【霍格沃兹测试开发】阿里/ 百度/ 腾讯/ 滴滴/ 字节/ 一线大厂面试真题讲解,卷完拿高薪Offer !
【霍格沃兹测试开发】App自动化测试零基础快速入门/Appium/自动化用例录制/参数配置
【霍格沃兹测试开发】如何用Postman 做接口测试,从入门到实战/ 接口抓包(最新最全教程)
【霍格沃兹测试开发】6 小时轻松上手功能测试/ 软件测试工作流程/ 测试用例设计/Bug 管理
【霍格沃兹测试开发】零基础小白如何使用Postman ,从零到一做接口自动化测试/ 从零基础到进阶到实战
【霍格沃兹测试开发】建议收藏全国CCF 测试开发大赛Python 接口自动化测试赛前辅导 / 项目实战
更多软件测试开发视频教程点此
软件测试职业发展
零基础入门
测试必备编程篇
自动化测试
性能测试
测试管理
工程效能篇
面试求职篇
软件测试的面试宝典,内含一线互联网大厂面试真题、面试技巧、软件测试面试简历指导,免费领取!