当前位置: 首页 > wzjs >正文

广州软件开发app郑州网站建设优化

广州软件开发app,郑州网站建设优化,长沙网页设计有哪些,wordpress jquery 无法比如我想让 AI 帮我发个邮件: AI 你好,请帮我发一封邮箱给: 收件人:xxxx.com 邮件主题:hi 李雷 邮件内容:I am 韩梅梅 AI 可以聊天,可以生成图片,可以生成视频,那它…

比如我想让 AI 帮我发个邮件:

AI 你好,请帮我发一封邮箱给:

收件人:xx@xx.com

邮件主题:hi 李雷

邮件内容:I am 韩梅梅

AI 可以聊天,可以生成图片,可以生成视频,那它能发邮件吗?

 

一般来说互联网版本的 AI 可以帮我们拟邮件内容与标题,但不会给我们自动发邮件,毕竟这操作就和病毒一样有点可怕。当然如果是在自己本地的私有化 AI 来说这就是可以实现的功能。

如何给 AI 赋予发邮件的能力?

随着 OpenAI 推出的“Function Calling”功能,通过 Function Calling,大模型能够通过结构化输入连接到外部系统,比如通过 API 进行交互,从而实现与外部世界的连接。

通过Function Calling AI 可以与外部工具和服务连接起来,这样 AI 的能力就非常的广阔。这样可以打造更智能、更强大的人工智能。
Function Calling 技术的不断发展,我们相信它将在未来的 AI 应用中发挥越来越重要的作用。

 

下面我们来具体看看Function Calling:

一、Function Calling概述

 

故事的开端来源于 OpenAI 的这次升级,“Function calling and other API updates”。

对于AI 需求,我们远远不止于希望 AI 只能生成文本,也希望能 AI 可以执行具体的任务,比如查询数据库、发送邮件、生成表格等等。早期,我们通过“指令微调”(Instruction Tuning)让模型理解并执行特定指令,但这种方式存在一些局限。

为了解决这个问题, Function Calling(函数调用)出现了。Function Calling 允许我们将具体的功能以函数的形式定义出来,模型在生成文本时,可以主动调用这些函数,从而实现复杂任务的执行。

Function Calling 的核心思想是:模型生成的不仅是文本,还可能是对具体函数的调用,以及调用所需的参数。这种机制使得模型能够更灵活、更安全、更高效地执行各种任务。

二、Function Calling原理

 

Function Calling 的实现原理主要分为以下几个步骤:

  1. 定义函数:将具体的功能封装成函数,定义函数的名称、入参和返回值。
  2. 函数映射:将函数的信息(如名称、参数类型等)映射到模型可理解的 Json 格式。
  3. 模型生成函数调用:在与模型的交互中,提示模型生成函数调用的 JSON 对象,而不是直接生成结果。
  4. 解析并执行函数调用:解析模型生成的 JSON 对象,调用相应的函数,并将函数的返回结果反馈给模型。
  5. 模型根据函数返回结果生成最终答案:模型根据函数的执行结果,生成最终的回复或继续进行交互。

其实Function Calling 的本质还是很简单的,就是和 AI 聊天,AI 解析聊天内容,触发生成调用函数的对象,程序根据 AI 生成的参数判断调用函数。本质上还是自己的程序在调用函数,不过中间有 AI 的交互。

如 AI 给我们生成邮件内容,然后告诉我们可以用这个去调用我们发邮件的函数或接口了。感觉是对智能体能力的扩展。

官方也给出了示例,也是非常简单的。

 

三、实战LLaMA实现自动发邮件

 

接下来,我们将基于LLaMA 3.2-1B 模型,实现一个简单的自动发邮件功能。我们将使用 Function Calling 的机制,让模型在需要发送邮件时,调用我们定义的 send_email 函数。

3.1 环境配置

首先,本地得安装以下依赖:

  • transformers: Hugging Face 的 Transformers 库,用于加载和使用预训练模型。
  • datasets: Hugging Face 的 Datasets 库,用于加载数据集。
  • smtplib: Python 内置库,用于发送邮件。

你可以使用以下命令安装所需的库:

pip install transformers datasets

3.2 加载模型和分词器

使用 Hugging Face 的 AutoModelForCausalLMAutoTokenizer 来加载 LLaMA 模型和分词器。

from transformers import AutoModelForCausalLM, AutoTokenizermodel_name = "llama-3.2-1b"  tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)

3.3 定义send_email

定义一个 send_email 函数,用于发送邮件。这个函数接受收件人、主题和正文作为参数。

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipartdef send_email(to, subject, body):# 请替换为你的邮件服务器配置smtp_server = "smtp.qq.com"smtp_port = 587smtp_username = "xx"smtp_password = "xx"msg = MIMEMultipart()msg["From"] = smtp_usernamemsg["To"] = tomsg["Subject"] = subjectmsg.attach(MIMEText(body, "plain"))with smtplib.SMTP(smtp_server, smtp_port) as server:server.starttls()server.login(smtp_username, smtp_password)server.sendmail(smtp_username, to, msg.as_string())return f"邮件已成功发送至 {to}"

3.4 构建 Function Calling 对话

构建一个对话系统,模拟用户与模型的交互。在这个对话中,模型可以根据用户的指令,调用 send_email 函数发送邮件。

def main():functions = [{"name": "send_email","description": "发送一封邮件","parameters": {"type": "object","properties": {"to": {"type": "string","description": "收件人邮箱地址",},"subject": {"type": "string","description": "邮件主题",},"body": {"type": "string","description": "邮件正文",},},"required": ["to", "subject", "body"],},},]messages = [{"role": "system", "content": "你是一个可以帮助用户发送邮件的助手。"},]while True:user_input = input("你: ")messages.append({"role": "user", "content": user_input})# 将 messages 转换为模型可接受的输入格式prompt = ""for message in messages:if message["role"] == "system":prompt += f"<system>{message['content']}</system>\n"elif message["role"] == "user":prompt += f"<user>{message['content']}</user>\n"elif message["role"] == "assistant":prompt += f"<assistant>{message['content']}</assistant>\n"# 生成模型回复inputs = tokenizer.encode(prompt, return_tensors="pt")outputs = model.generate(inputs, max_length=512)response = tokenizer.decode(outputs[0], skip_special_tokens=True)# 提取模型生成的函数调用if "send_email" in response:# 这里我们简化处理,直接提取参数to = input("请输入收件人邮箱地址: ")subject = input("请输入邮件主题: ")body = input("请输入邮件正文: ")result = send_email(to, subject, body)print(f"助手: {result}")messages.append({"role": "assistant", "content": result})else:print(f"助手: {response}")messages.append({"role": "assistant", "content": response})

3.5 运行程序

运行程序后,你可以输入一些指令,看看模型是否会调用 send_email 函数发送邮件。

例如:

你: 帮我发送一封邮件给 xx@xx.com,主题是“测试邮件”,内容是一封感谢信,具体内容你帮我写。

程序会提示你输入收件人邮箱地址、主题和正文,然后发送邮件并返回结果。

 

我是栈江湖,如果你喜欢此文章,不要忘记点赞+关注

 

http://www.dtcms.com/wzjs/65243.html

相关文章:

  • 网页制作网站平台衡水seo培训
  • 建设网站公司需要哪些证件我想做百度推广
  • 网站收录提交入口官网网上推广企业
  • 最好的网站排名优化工作室门户网站有哪些
  • 如何建立淘宝客网站网络培训课程
  • vue做门户网站用什么ui网站开发技术有哪些
  • 淘宝客如何做淘宝客网站推广高质量外链
  • 做自己的视频网站网站需要怎么优化比较好
  • 找哪个网站做摩配免费的云服务器有哪些
  • 商务网站建设与管理企业邮箱查询
  • 怎样创建个人购物网站搜索引擎优化包括哪些方面
  • 上海营销型网站建设哪家好小网站搜什么关键词好
  • 网站面包屑如何做抖来查关键词搜索排名
  • wordpress 导航链接关键词优化排名软件推荐
  • 在政府门户网站建设会议主持词厦门seo搜索引擎优化
  • 怎样做废旧网站googleplay安卓版下载
  • 云南做网站费用网络营销具有哪些优势和吸引力
  • 网站 免费空间营销广告
  • 邓州做网站青岛seo网络优化公司
  • 用万网建设网站教程视频南宁百度seo
  • 网站开发系统需求说明书百度云链接
  • dw设计做网站案例网络推广营销软件
  • 郴州本地网站建设免费模式营销案例
  • 天津滨海新区网站建设网站优化工具
  • 安全等级保护每个网站必须做吗色盲图
  • 西安做网站多钱搜索引擎优化策略
  • 全国旅游服务平台甘肃seo网站
  • 太原做网站找谁seo博客模板
  • 网站推荐男生正能量2021营销型网站建设
  • 超超大型网站独立服务器微营销推广软件