赞
踩
大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容
从0起步,扬帆起航。
Agent 通常是一个智能软件实体,能够感知其环境,并根据这些感知做出决策和行动。它可能包括学习能力,以优化其未来的决策和行动。
当下Agent研究往往是针对于文本类型数据输入,对语义进行感知并决策,现在对图文多模态输入的Agent研究相对比较匮乏。
对不同类型图像进行识别时的解决方案。
技术架构图如下:
其中,工具使用效果如下:
from fastapi import FastAPI, HTTPException, Depends
from typing import List, Optional
import re
import json
import datetime
import pandas as pd
from pydantic import BaseModel
app = FastAPI()
def post_processing(input_data):
# 使用正则表达式匹配{}之间的内容
pattern = r'{(.*?)}'
match = re.search(pattern, input_data, re.DOTALL)
# 匹配后做数据后处理
if match:
match = '{' + match.group(1) + '}'
json_str = match.replace(': {\n ', ':null,').replace('\n', '').replace('},', ',').replace(':',':')
json_str = json_str.strip('"\"')
return json_str
else:
return str({'error':'llm out error!'})
@app.get("/pic_type")
def get_pic_type(url):
import openai
from openai import OpenAI
import re
API_BASE = "https://api.lingyiwanwu.com/v1"
API_KEY = "e6609f77a0fb40a290eb034535917144"
client = OpenAI(
# defaults to os.environ.get("OPENAI_API_KEY")
api_key=API_KEY,
base_url=API_BASE
)
prompt = '''
## 职位:你是一个图像类型判别小助手。
## 职能:你可以将图像分类为【设备铭牌、文件表格、其他】三个类型。其中,设备铭牌指包含设备类型、设备规范、设备厂家、编号、参数等信息的铭牌图像;文件表格指以表格形式存储信息的图像。
## 输出格式:你只能输出判断后得出的图像类型,不需要输出图像类型以外的信息。如:设备铭牌、文件表格、其他
'''
completion = client.chat.completions.create(
model="yi-vl-plus",
messages= [
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": url
}
},
{
"type": "text",
"text": prompt
}
]
}
]
)
raw_result = completion.choices[0].message.content
print('LLM Respone:',raw_result)
# 定义正则表达式,匹配“设备铭牌”或“文件表格”
pattern = re.compile(r'设备铭牌|文件表格')
# 使用正则表达式搜索字符串
match = pattern.search(raw_result)
return match.group() if match else None,url
@app.get("/mingpai_info")
def get_mingpai_info(url):
import openai
from openai import OpenAI
import re
API_BASE = "https://api.lingyiwanwu.com/v1"
API_KEY = "e6609f77a0fb40a290eb034535917144"
client = OpenAI(
# defaults to os.environ.get("OPENAI_API_KEY")
api_key=API_KEY,
base_url=API_BASE
)
prompt = '''
## 职位:你是一个具备图像信息提取、信息规整的智能助手
## 职能:请提取图像中的文字、数字等文本内容,重点提取【提取下二维码下方的数字和字母组成的条形码编号】。
根据识别内容信息提取【设备名称】、【规约标准】、【电压参数】、【电流参数】、【频率参数】、【生产年份】、【生产公司】等内容。
提取后,返回格式参考如下:{
"编号":"09991DY00000009999999999",
"设备名称":"配电箱",
"相关标准":"GB12345.1-2099",
"生产年份":"2059年",
"生产厂家":"某某有限公司",
"电压参数":"110V",
"电流参数":"0.3A",
"频率参数":"80HZ"
"功率参数":“COSΦ=0.8滞后”
}
注意,提取不到时将提取内容标注“null”,且不要填入多余内容。
注意,我不需要任何代码,请输出json格式结果,json中不允许嵌套json。
'''
completion = client.chat.completions.create(
model="yi-vl-plus",
messages= [
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": url
}
},
{
"type": "text",
"text": prompt
}
]
}
]
)
raw_result = completion.choices[0].message.content
print('LLM Respone:',raw_result)
return post_processing(raw_result)
@app.get("/table_info")
def get_table_info(url):
import openai
from openai import OpenAI
import re
API_BASE = "https://api.lingyiwanwu.com/v1"
API_KEY = "e6609f77a0fb40a290eb034535917144"
client = OpenAI(
# defaults to os.environ.get("OPENAI_API_KEY")
api_key=API_KEY,
base_url=API_BASE
)
prompt = '''
## 职位:你是一个具备表单图像信息提取、信息规整的智能助手
## 职能:请提取图像中的文字、数字等文本内容,注意图像是一个表格,你需要理解表格中的内容。
根据识别内容信息提取【工程项目名称】、【工作任务】、【工作内容】、【运行单位】、【承包商或作业施工单位】、【交底日期】、【安全措施】等内容。
提取后,返回格式参考如下:{
"工程项目名称":"某某项目",
"工作任务":"XXKv站XX任务",
"运行单位":"某某所",
"承包商或作业施工单位":"某某公司",
"交底日期":"2024年6月13日",
"安全措施":""
}
注意,提取不到时将提取内容标注“null”,且不要填入多余内容。
注意,我不需要任何代码,请输出json格式结果。
'''
completion = client.chat.completions.create(
model="yi-vl-plus",
messages= [
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": url
}
},
{
"type": "text",
"text": prompt
}
]
}
]
)
raw_result = completion.choices[0].message.content
print('LLM Respone:',raw_result)
return post_processing(raw_result)
@app.get("/generate")
def get_table(input_str = Depends(post_processing)):
print(input_str)
# 将字符串转换为字典
data_dict = json.loads(input_str.replace('\\n','').replace('\\',''))
for k, v in data_dict.items():
if type(v) == list:
data_dict[k] = [' '.join(v)]
else:
data_dict[k] = [v]
print('##################','json')
df_json = pd.DataFrame(data_dict)
print(data_dict)
print('##################','df')
print(df_json)
'''
# 读取excel文件
df_excel = pd.read_excel('/home/gputest/lyq/py_file/result.xlsx', engine='openpyxl')
# 将json数据追加到excel的DataFrame中(这里简单地追加到末尾)
# 注意:你可能需要根据你的数据结构和需求调整这一步
df_excel = pd.concat([df_excel, df_json], ignore_index=True)
'''
# 保存修改后的excel文件
# 获取当下时间并format
formatted_time = str(datetime.datetime.now().strftime("%Y_%m_%d_%H%M%S"))
df_json.to_excel(formatted_time+'.xlsx', index=False, engine='openpyxl')
return 'http://172.19.138.52:9707/'+formatted_time+'.xlsx'
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="172.19.138.52", port=9706)
需要强调的是,由于Dify不支持图像数据在工作流中的流通控制,因此本设计使用图像链接。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。