大模型相关目录
大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容
从0起步,扬帆起航。
- 再谈Agent:Dify智能体实现Txet2SQL
- Moe模式:或将是最好的大模型应用开发路径
- 一文带你了解大模型RAG
- 详细记录swfit微调interVL2-8B多模态大模型进行目标检测(附代码)
- DIfy中集成magic-pdf实现文档解析agent与多模态大模型图文问答
- 大模型Prompt trick:利用大模型同情心提升模型性能
- 一文带你入门大模型微调
- 开源大模型LLaMA架构介绍
- CyberScraper-2077+simple-one-api:使用大模型爬虫
- 大模型高效利用结构化信息研究:HTML格式或许更好
- moonshot:一个用于评估任何 LLM 应用程序的简单模块化工具
- 多模态大模型赋能工程设计合规性校验解决方案
简介
工程建设应用场景下,存在接入方式图、接线图、配置图、安装图等典型设计原则,通过人工智能和大模型相关技术,可实现对工程建设有关图纸的智能分析识别。
总体设计
从数据层面看,可简单描述如:
输入初始蓝图扫码数据——>经图像处理强化后的图像数据——>拆解图纸为指定关键点,手动制定或目标检测定位——>关键点合规性校验——>校验结果整合,完成对整体图纸的合规性检验。
与之对应的,算法描述可如上图所示。
实际代码及开发组成
涉及:dify大模型应用开发平台、qwen多模态大模型接口、python脚本开发及fastapi框架
总体架构:设计了面向镀锌角铁的合规性检测子agent;设计了面向低压柜的合规性检验子agent;设计了镀锌角铁、低压柜的判别主agent
镀锌角铁的合规性检测子agent
该模块实现的效果和原理如上图所示,具体由dify开发而来。
dify中呈现如下:
LLM1模块prompt设定:
# 职能:
你是一个设计图描述专家,可以对设计图纸图像进行内容描述。
# 职能:
你是一个设计图描述专家,可以对设计图纸图像进行内容描述。
判断镀锌角铁是否与地面垂直。
提取图纸中两个镀锌角铁之间的距离。
# 限制
回答要求简单明了。
指出镀锌角铁是否与地面垂直
明确说明两个镀锌角铁之间的距离。
# 镀锌角铁硬竖直摆放时垂直地面,不可倾斜。
{{#sys.query#}}
LLM2模块prompt设定:
# 职能:
你是一个规则校验专家,可以根据规则对输入的信息进行校验。
# 校验点:
请检查镀锌角铁必须垂直插入地面
请检查镀锌角铁间距必须为5000mm左右
【输入信息】:图纸中两个镀锌角铁之间的距离是5000mm,是垂直插入地面的。
推理思考:
首先校验镀锌角铁是否垂直插入地面。
随后检查镀锌角铁之间的距离,获取距离数值为5000mm.
分析结论:
镀锌角铁垂直插入地面,符合要求
镀锌角铁间距为5000mm左右,符合要求
【输入信息】:图中镀锌角铁之间的距离是4000mm,不是垂直插入地面的。
推理思考:
首先校验镀锌角铁是否垂直插入地面。
随后检查镀锌角铁之间的距离,获取距离数值为4000mm.
分析结论:
镀锌角铁不是垂直插入地面,不符合要求
镀锌角铁间距为4000mm左右,不符合要求
【输入信息】:{{#llm.text#}}
后处理函数:
def main(arg1: str) -> dict:
result = arg1.split(':')[-1]
return {
"result": result,
}
低压柜子agent
与之类似
判别设计
import requests
import json
from openai import OpenAI
from fastapi import FastAPI, HTTPException, Depends
app = FastAPI()
def image_analysis_1(image_url):
url = 'http://172.20.32.127/v1/chat-messages'
headers = {
'Authorization': 'Bearer app-9FIon6xxoW5cilCpRiDwzGnG',
'Content-Type': 'application/json'
}
data = {
"inputs": {},
"query": "开始分析",
"response_mode": "blocking",
"conversation_id": "",
"user": "abc-123",
"files": [
{
"type": "image",
"transfer_method": "remote_url",
"url": image_url
}
]
}
response = requests.post(url, headers=headers, data=json.dumps(data))
return response.json()['answer']
def image_analysis_2(image_url):
url = 'http://172.20.32.127/v1/chat-messages'
headers = {
'Authorization': 'Bearer app-Oga2SqOAELjdAwAQmH27rBmV',
'Content-Type': 'application/json'
}
data = {
"inputs": {},
"query": "开始分析",
"response_mode": "blocking",
"conversation_id": "",
"user": "abc-123",
"files": [
{
"type": "image",
"transfer_method": "remote_url",
"url": image_url
}
]
}
response = requests.post(url, headers=headers, data=json.dumps(data))
return response.json()['answer']
def extract_content(json_string):
# 将JSON字符串转换成Python字典
data = json.loads(json_string)
content = ''
# 遍历choices列表查找content字段
if 'choices' in data:
for choice in data['choices']:
if 'message' in choice and 'content' in choice['message']:
content = choice['message']['content']
return content
def get_pic_type(input_url):
client = OpenAI(
api_key='sk-api脱敏',
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen-vl-plus",
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": "## 职位:你是一个图像类型判别大师。\n."+'''
你需要判别图像属于【镀锌角铁】还是属于【低压柜】。
只能输出一个类别。
例1:
输入:图像1
输出:镀锌角铁
例2:
输入:图像2
输出:镀锌角铁
例3:
输入:图像3
输出:低压柜
# 注意只输出一个类别,不输出其他内容。
开始分析:
'''
},
{
"type": "image_url",
"image_url": {
"url": input_url
}
}
]
}
]
)
return extract_content(completion.model_dump_json())
@app.get("/main_fuction")
def main(input_img_url):
response = ''
try:
mid = get_pic_type(input_img_url)
if "低压柜" in mid:
response = image_analysis_2(input_img_url)
print(mid,response)
else:
response = image_analysis_1(input_img_url)
print(mid,response)
except:
print('some error exist.')
return response
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=60924)
运行后将其接入dify工具。
最终效果
使用上述图像进行测试
效果如上。