AI算法工程师实习周记(五)

总结:

AI可以干很多事,关键在于提示词,有时候不要急,给大模型时间,可以一步步引导大模型解决复杂任务。

本周知识清单:

  • 调研dify,实现文档生成demo
  • 查找大模型前端招聘要求并整理
  • dify实现根据多轮对话进行意图识别并调用相应的api
  • 看chatllamainex和dify能否结合,看看dify自身有没有上传数据源并检索的功能,有。

【LLM】快速了解Dify 0.6.10的核心功能:知识库检索、Agent创建和工作流编排(二)-CSDN博客

下周任务:

  • 交接工作
  • 任务闭环

关键记录

调研dify,实现文档生成demo

dify的目标:

开发者可以快速搭建生产级的生成式 AI 应用

提供:

包括对数百个模型的支持、直观的 Prompt 编排界面、高质量的 RAG 引擎、稳健的 Agent 框架、灵活的流程编排,并同时提供了一套易用的界面和 API。

AutoDoc-ChatGPT 智能文档生成器

AutoDoc-ChatGPT 是一个Python脚本,利用ChatGPT模型的强大功能,可以自动为任何编程语言生成详细的文档

通过AutoDoc-ChatGPT,您能够轻松为代码库创建全面的文档。只需提供要记录的文件路径,AutoDoc-ChatGPT就会用自然语言生成关于其功能、参数和返回值的详细描述。

AutoDoc-ChatGPT:AutoDoc-ChatGPT is a Python script that leverages the power of ChatGPT model to automatically generate documentation for any programming language. With AutoDoc-ChatGPT, you can easily generate comprehensive documentation for your codebase. - GitCode

Copilot:

Text_To_Video 是一个利用本文直接生成视频的:guifaChild/text_to_vedio: 这是一个由文本直接生成视频的项目 (github.com)

(一)用Dify创建一个由AI自动生成PPT的应用:

用Dify创建一个由AI自动生成PPT的应用_哔哩哔哩_bilibili

没实现,因为大模型目前只能用llama

发现科大讯飞已经实现了效果还不错:

讯飞智文 - AI在线生成PPT、Word (xfyun.cn)

输入奥运会闭幕式:

讯飞智文 - AI在线生成PPT、Word (xfyun.cn)

下载要钱:

(二)dify流程构建与Api调用 Ai开发 开源版的coze

3、dify流程构建与Api调用 Ai开发 开源版的coze_哔哩哔哩_bilibili

1.建好工作流

用cool快速调用dify登录官网

(1)

Cool官网 | 闪酷科技 (cool-js.com)找到插件市场,搜索dify,下载插件

这样就有密钥和网址了

(2)自己搭建cool admin代码生成界面

(3)cool admin添加插件

点击右上角设置

修改这2个地方就好了,可能有端口设置,记得如果有要加上端口

我没有搭建cool admin,用的演示示例

https://show.cool-admin.com

账户:admin,密码:123456

报错

重启一下就好了

(4)编写代码运行之后可以在控制台看到结果,但是这是TypeScript 或 JavaScript 编写的,不是很懂。

找到了,在vscode运行:

git clone https://gitee.com/cool-team-official/cool-admin-midway.git
cd cool-admin-midway

npm i
npm run dev
open http://localhost:8001/

注: npm i如果安装失败可以尝试使用cnpm,或者切换您的镜像源,推荐使用pnpm

需要1小时以上

src/modules/demo/controller/open/plugin.ts目录下编写上面的图片

靠,好像可以直接python调

import requests
import json

# API URL
api_url = "http://172.16.45.8/v1/workflows/run"

# API Key
api_key = "app-GjxaXNIlZzpXuLJRfNk7S48w"

# Request headers
headers = {
    'Authorization': f'Bearer {api_key}',
    'Content-Type': 'application/json',
}

# Request payload
data = {
    "inputs": { '你是谁' },
    "response_mode": "streaming",
    "user": "abc-123"
}

# Send the POST request
response = requests.post(api_url, headers=headers, data=json.dumps(list(data)))

# Check the response
if response.status_code == 200:
    print("Request successful")
    print("Response:", response.json())
else:
    print(f"Request failed with status code: {response.status_code}")
    print("Error:", response.text)

显示服务错误,可能部署dify的服务器出了问题。

(三)dify构建输入一段话,写一个图文的说明稿,并结合python在本地输出一个word

1.新建一个工作流,开始:

下一个链接专门扩写的大模型

2.LLM扩写的配置,注意system是确定功能,use模块才是对话的内容:

3.下一个是编写说明稿LLM

4.编写生成图片的三个关键词的LLM

5.cogview 3实现关键词生成图片,注意这个需要质谱AI,big modol有免费密钥,但是每天并发生成5次,总次数还限制400次.智谱AI开放平台 (bigmodel.cn)。还有爬虫也有免费密钥萤火虫 (firecrawl.dev)

6.结束模块,设计好输出什么就行

运行结果:

"Question": "AI发展"

{
  "text": "**标题:** 人工智能简史:从早期阶段到当前发展\n\n**正文:**\n\n人工智能(AI)是一门计算机科学分支,旨在使计算机能够模仿人类的大脑行为。从20世纪50年代至今,AI发展迅速,不仅改变了我们对技术的理解,也深刻影响了我们的生活。\n\n早期阶段(1950-1970年)\n\n*   第一台电子计算机:英国科学家Alan Turing于1951 年创造了第一个电子计算机,并发表了《计算机和智能》一文,提出了测试计算机智能的概念,即现在的图灵测试。\n*   机器学习:1950 年代末期,David Marr 和 Marvin Minsky 等人开始研究机器学习。这是 AI 的第一阶段,主要关注的是使计算机能够自动从数据中学习和做出决策。\n\nAI冬眠(1970-1980年)\n\n*   经济因素:1970 年代初期,由于资金紧张,许多政府和机构开始减少对 AI 研究的投资。这导致了 AI 的发展速度放缓。\n*   技术瓶颈:当时的计算机硬件和软件技术尚未足够成熟,难以实现复杂的人工智能系统。\n\nAI复兴(1980-1990年)\n\n*   专注于特定领域:1980 年代末期,研究人员开始专注于特定的 AI 领域,例如自然语言处理、图像识别和机器学习。这一时期的工作重点是解决具体问题。\n*   技术进步:运算能力、存储空间和网络速度的飞速增长为新的AI应用提供了基础。\n\n当前阶段(2000年起)\n\n*   大数据与云计算:大数据和云计算的出现,提供了海量数据处理和分析能力,使得 AI 应用更加广泛和深入。\n*   深度学习:深度学习成为主流的机器学习方法,许多现实世界问题都可以通过此技术得到解决。\n\n未来的展望\n\n人工智能将继续进步,将其应用于医疗、教育、交通等各个领域。",
  "json": [
    {
      "url": "https://sfile.chatglm.cn/testpath/9c62ff73-398f-556d-8936-cd8b5d27ad34_0.png"
    }
  ],
  "files": [
    {
      "__variant": "FileVar",
      "tenant_id": "49fa5b7a-5e15-437e-939a-92b17bdd76de",
      "type": "image",
      "transfer_method": "tool_file",
      "url": "/files/tools/f52e9b42-5af5-4946-b719-2f66bfc8dd27.png?timestamp=1723598467&nonce=a7a06b6fe71658ef79df61bfff697f45&sign=4NT6mXBgI6YOm-n1C9ZXIKjxMwmA-VUfofBo7YuwbBY=",
      "remote_url": "/files/tools/f52e9b42-5af5-4946-b719-2f66bfc8dd27.png",
      "related_id": "f52e9b42-5af5-4946-b719-2f66bfc8dd27",
      "filename": "f52e9b42-5af5-4946-b719-2f66bfc8dd27.png",
      "extension": ".png",
      "mime_type": "image/jpeg"
    }
  ]
}

访问url就出现图片

把上面的文本和这个图片url输入到python代码中,就能输出word文档。别忘了pip install 开头的包

import os
import requests
# 导入模块
from docx import Document
from docx.shared import Inches, Cm
path = os.getcwd() + '\\abc\\'  # 设置图片文件路径,前提是必须要有abc这个文件夹
# df=pd.read_excel('url1.xlsx')

#urls=df['url']
url = 'https://sfile.chatglm.cn/testpath/9c62ff73-398f-556d-8936-cd8b5d27ad34_0.png'
r = requests.request('get', url)  # 获取网页
print(r.status_code)

with open('2.jpg', 'wb') as f:  # 打开写入到path路径里-二进制文件,返回的句柄名为f
    f.write(r.content)  # 往f里写入r对象的二进制文件
f.close()



# 新建文档对象按模板新建 word 文档文件,具有模板文件的所有格式
doc = Document()

# 增加标题:add_heading(self, text="", level=1):
doc.add_heading('AI发展',1)

# 增加段落正文,add_paragraph(self, text='', style=None):返回一个 Paragraph 段落对象
par = doc.add_paragraph('第一个段落:')
print(par)  # <docx.text.paragraph.Paragraph object at 0x000000000A889F08>

# 在段落中添加文字块,add_run(self, text=None, style=None):返回一个 run 对象
run_ = par.add_run('**标题:** 人工智能简史:从早期阶段到当前发展\n\n**正文:**\n\n人工智能(AI)是一门计算机科学分支,旨在使计算机能够模仿人类的大脑行为。从20世纪50年代至今,AI发展迅速,不仅改变了我们对技术的理解,也深刻影响了我们的生活。\n\n早期阶段(1950-1970年)\n\n*   第一台电子计算机:英国科学家Alan Turing于1951 年创造了第一个电子计算机,并发表了《计算机和智能》一文,提出了测试计算机智能的概念,即现在的图灵测试。\n*   机器学习:1950 年代末期,David Marr 和 Marvin Minsky 等人开始研究机器学习。这是 AI 的第一阶段,主要关注的是使计算机能够自动从数据中学习和做出决策。\n\nAI冬眠(1970-1980年)\n\n*   经济因素:1970 年代初期,由于资金紧张,许多政府和机构开始减少对 AI 研究的投资。这导致了 AI 的发展速度放缓。\n*   技术瓶颈:当时的计算机硬件和软件技术尚未足够成熟,难以实现复杂的人工智能系统。\n\nAI复兴(1980-1990年)\n\n*   专注于特定领域:1980 年代末期,研究人员开始专注于特定的 AI 领域,例如自然语言处理、图像识别和机器学习。这一时期的工作重点是解决具体问题。\n*   技术进步:运算能力、存储空间和网络速度的飞速增长为新的AI应用提供了基础。\n\n当前阶段(2000年起)\n\n*   大数据与云计算:大数据和云计算的出现,提供了海量数据处理和分析能力,使得 AI 应用更加广泛和深入。\n*   深度学习:深度学习成为主流的机器学习方法,许多现实世界问题都可以通过此技术得到解决。\n\n未来的展望\n\n人工智能将继续进步,将其应用于医疗、教育、交通等各个领域')
print(run_)     # <docx.text.run.Run object at 0x000000000B2D31C8>

# 增加图片,add_picture(self, image_path_or_stream, width=None, height=None):返回一个 InlineShape 对象
pic_par = doc.add_picture('2.jpg', width=Cm(6), height=Cm(5))
print(pic_par)  # <docx.shape.InlineShape object at 0x000000000B2F11C8>

# p2 = doc.add_paragraph('第二个段落:')
# p2.add_run('段落文字块')
#
# # 增加表格add_table(self, rows, cols, style=None):返回一个表格对象
# table = doc.add_table(2,3)
# print(table)  # <docx.table.Table object at 0x000000000B302688>

# 保存文件
doc.save('test2.docx')

部分结果:

尝试把python嵌入到dify里面,但是报错,没有docx的包,要改dify的后端安装包。

先不改dify试试,设置一个http请求模块,实现输入http://127.0.0.1:8009/items/bsy?url=https://sfile.chatglm.cn/testpath/9c62ff73-398f-556d-8936-cd8b5d27ad34_0.png&title=’hfkjsdhvl’&text=’dshfhjdhflaj’

在代码编写端输出bsy.docx,然后在想办法嵌入进dify,下面是代码,别忘了安装包

import os
import requests
# 导入模块
from docx import Document
from docx.shared import Inches, Cm
from fastapi import FastAPI, File, UploadFile, Path, Query
from fastapi.responses import HTMLResponse
app = FastAPI()

@app.get("/items/{item_id}")
def read_item(item_id,url,title,text ):



    path = os.getcwd() + '\\scratches\\'  # 设置图片文件路径,前提是必须要有abc这个文件夹
# df=pd.read_excel('url1.xlsx')

#urls=df['url']
#url = 'https://sfile.chatglm.cn/testpath/9c62ff73-398f-556d-8936-cd8b5d27ad34_0.png'
    r = requests.request('get', url)  # 获取网页
    print(r.status_code)

    with open(f'{item_id}.jpg', 'wb') as f:  # 打开写入到path路径里-二进制文件,返回的句柄名为f
        f.write(r.content)  # 往f里写入r对象的二进制文件
    f.close()



# 新建文档对象按模板新建 word 文档文件,具有模板文件的所有格式
    doc = Document()

# 增加标题:add_heading(self, text="", level=1):
    doc.add_heading(title,1)

# 增加段落正文,add_paragraph(self, text='', style=None):返回一个 Paragraph 段落对象
    par = doc.add_paragraph('第一个段落:')
    print(par)  # <docx.text.paragraph.Paragraph object at 0x000000000A889F08>

# 在段落中添加文字块,add_run(self, text=None, style=None):返回一个 run 对象
    run_ = par.add_run(text)
    print(run_)     # <docx.text.run.Run object at 0x000000000B2D31C8>

# 增加图片,add_picture(self, image_path_or_stream, width=None, height=None):返回一个 InlineShape 对象
    pic_par = doc.add_picture(f'{item_id}.jpg', width=Cm(6), height=Cm(5))
    print(pic_par)  # <docx.shape.InlineShape object at 0x000000000B2F11C8>

# p2 = doc.add_paragraph('第二个段落:')
# p2.add_run('段落文字块')
#
# # 增加表格add_table(self, rows, cols, style=None):返回一个表格对象
# table = doc.add_table(2,3)
# print(table)  # <docx.table.Table object at 0x000000000B302688>

# 保存文件
    doc.save(f'{item_id}.docx')

    return {"item_id": item_id}

if __name__ == "__main__":
    import uvicorn

    # uvicorn.run(app, host="192.168.140.2", port=8002)
    uvicorn.run(app, host="127.0.0.1", port=8009)

dify实现根据多轮对话进行意图识别并调用相应的api

意图识别

意图是承载具体领域下的各个功能点,每一个意图都有一个明确的功能,且两个意图不应该有相同的功能。例:

用户的query说"我要听晴天",对应的意图就是"根据歌名听音乐"
用户的query是"我听",此处明显无法确认用户的意图,用户是想听歌、还是想听新闻?


槽位填充

槽位填充可以理解成针对用户query中的关键字的提取。举例:

用户的query说"我要听晴天",对应的一个槽位就是 song="晴天"
用户的 query说"我要听周杰伦的晴天",对应可以提取出两个槽位:artist="周杰伦", song="晴天"
槽位是执行意图必要的前提条件,槽位需要关联一个实体作为参数的取值范围。例如:"根据歌名听音乐"意图中"歌名"是必要的条件,"歌名"就是一个实体。实体是某一类名词的集合,提供了一个有限定范围的词典。

原文链接:智能语音交互流程_智能语音对话交互设计 对话管理-CSDN博客

搭建成果:

注意地图是中文地图,必须输入中文,所以加了一个翻译器,然后参数提取器内核好像是英文,换了中文大模型也还是没用,可能是参数提取器提示词的问题,下面是提示词细节:

提示词工程

来源:ChatGPT提示工程|AI大神吴恩达教你写提示词(含全部翻译稿和视频,建议收藏!) - 知乎 (zhihu.com)

第2集 指南- ChatGPT提示工程师教程 | AI大神吴恩达 x OpenAI官方-prompt engineering_哔哩哔哩_bilibili

1.编写清晰明确的指示

(1)用分隔符,分段,可以更清晰,并且避免跟对话输入冲突。

例子:目标是总结一段话的内容

(2)构建结构化输出,json、html。

(3)要求模型检查是否满足条件

(4)少量训练提示:执行任务之前,提供成功的示例

2.给模型时间思考

当碰到一个复杂的任务时,人都需要时间去完成,大模型更是。

(1)说明解决任务的详细步骤

结果:

会一下法语一下英语,改进,就是格式再细化:

(2)指示模型在匆忙做出结论之前思考解决方案

比如输入数学题和学生答案,其实每一步逻辑是对的,但是对题目理解是错的,直接输入,大模型会回答这是对的,所以要先让大模型自己回答,再比对答案。

结果:

3.模型限制

如果模型在训练过程中接触到了大量的知识,尽管如此,它并没有完美地记住所见到的信息,因此它并不了解自己知识的边界。这意味着它可能会尝试回答关于晦涩主题的问题,并且可能会编造出听起来合理但实际上并不真实的东西。我们称这些虚构的观念为“幻觉”。比如问他一个牙刷公司不存在的产品介绍,他会回答的很像真的产品,有条理。

解决办法:要求模型首先从文本中找到任何相关的引用,之后要求用引用的文本进行回答,并且可以追溯答案、回源文档

4.迭代提示

        

提示从技术说明开始写产品说明:

但是回答太长了:

提示词加一段:

结果;

想专业一点,可以添加:

结果:

进一步修改提示,使得最后显示产品ID

想展示尺寸,并用HTML格式展现:

结果:

打印出来是这样子:

5.模型推理

还可以利用提示进行推理和情感分析,还可以设定选项。

提取多个结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值