OPC UA遇见chatGPT

news2024/11/27 14:53:57

     

         最近opc 基金会将召开一个会议,主题是”OPC UA meets IT“。由此可见,工业自动化行业也开始研究和评估chatGPT带来的影响了。

本文谈谈本人对OPC UA 与chatGPT结合的初步实验和思考。

构建OPC UA 信息模型

         chatGPT 的确非常强大了,使用自然语言描述一个设备的信息模型,它能够直接生成该设备的OPC UA 信息模型,并且以OPCUA nodeset2.xml 格式输出:

代码


from openai import OpenAI

client = OpenAI(
    api_key="sk-xxxxxx",
    base_url="https://api.chatanywhere.tech/v1"
)
 
completion = client.chat.completions.create(
  model="gpt-3.5-turbo",
  messages=[
    {"role": "system", "content": "creat opc ua information model ,output modeset2 xml format"},
    {"role": "user", "content": "typename motor ,attributes include current,voltage temperature,power data type float"}
  ],
  temperature=0.3,
)
 
print(completion.choices[0].message.content)

结果

runfile('E:/yao2024/python2024/chatgptSimple.py', wdir='E:/yao2024/python2024')
```xml
<?xml version="1.0" encoding="UTF-8"?>
<opc:Model xmlns:opc="http://opcfoundation.org/UA/2011/03/UANodeSet.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <opc:ObjectType NodeId="ns=1;i=1001" BrowseName="MotorType">
        <opc:DisplayName>Motor</opc:DisplayName>
        <opc:References>
            <opc:Reference ReferenceType="HasProperty" IsForward="false">i=47</opc:Reference>
            <opc:Reference ReferenceType="HasProperty" IsForward="false">i=48</opc:Reference>
            <opc:Reference ReferenceType="HasProperty" IsForward="false">i=49</opc:Reference>
            <opc:Reference ReferenceType="HasProperty" IsForward="false">i=50</opc:Reference>
        </opc:References>
    </opc:ObjectType>
    <opc:Variable NodeId="ns=1;i=47" BrowseName="Current" DataType="Float">
        <opc:DisplayName>Current</opc:DisplayName>
    </opc:Variable>
    <opc:Variable NodeId="ns=1;i=48" BrowseName="Voltage" DataType="Float">
        <opc:DisplayName>Voltage</opc:DisplayName>
    </opc:Variable>
    <opc:Variable NodeId="ns=1;i=49" BrowseName="Temperature" DataType="Float">
        <opc:DisplayName>Temperature</opc:DisplayName>
    </opc:Variable>
    <opc:Variable NodeId="ns=1;i=50" BrowseName="Power" DataType="Float">
        <opc:DisplayName>Power</opc:DisplayName>
    </opc:Variable>
</opc:Model>

         酷吧?关键是提示要写好。如何生成特定行业的DSL 语言,还需要进一步研究。例如生产线的工艺流程编排。这将极大提升系统设计和维护的工作效率,降低了工程成本。

生成结构化数据

  下面的例子演示如何利用chatGPT按照JSON 模板,构建结构化数据。

程序

import json
import os
from langchain_openai import ChatOpenAI
from langchain.agents import initialize_agent, Tool
from langchain.agents.mrkl import prompt
os.environ['OPENAI_API_KEY'] ="sk-xxxxxxxx"
os.environ['OPENAI_BASE_URL'] ="https://api.chatanywhere.tech/v1"
def get_template(productClass):
    #print(productClass)
 
    answer = [
        {"type": "product type",
         "brand": "product brand",
         "manufacture":"product manufacture",
         "color":"color of prodcts",
         "size":"product size"}
         
    ]
  
    return json.dumps(answer)
def device_control(device_id):
    print(device_id)
    status=True
    answer = [
        {"状态": status}
    ]
    return json.dumps(answer)
def lang_chain_agent(text):
    llm = ChatOpenAI(model_name="gpt-3.5-turbo",base_url="https://api.chatanywhere.tech/v1")

    tools = [
        Tool(
            name = "get_template",
            func=get_template,
            description="use this tool when you need to get product model tempplate ,To use the tool, you must provide  chinese product class",
        )
 
    ]

    agent = initialize_agent(
        tools,
        llm,
        agent="zero-shot-react-description",
        agent_kwargs=dict(suffix='Answer should be  json. ' + prompt.SUFFIX), 
        verbose=True,
        return_intermediate_steps=True)

    response = agent({"input": text})

    return response
lang_chain_agent("根据如下数据生成符合模型样板的json 产品数据,  类型 足球 品牌 小少年 制造商 鹰派运动用品公司 颜色 红色 尺寸 12 英寸")

结果

> Entering new AgentExecutor chain...
I need to use the get_template tool to generate the product model template for a football product.
Action: get_template
Action Input: 足球
Observation: [{"type": "product type", "brand": "product brand", "manufacture": "product manufacture", "color": "color of prodcts", "size": "product size"}]
Thought:Now I can fill in the template with the provided data.
Final Answer: {"type": "足球", "brand": "小少年", "manufacture": "鹰派运动用品公司", "color": "红色", "size": "12 英寸"}

> Finished chain.

chatGPT 访问OPC UA 服务器

    OPC UA是自动化行业广泛应用的工业标准,我们设想可以在chatGPT Agent 中增加一个OPCUA Client ,用它来获取现场设备的状态,并且实现chatGPT对物理设备的控制。其架构如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1578119.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端开发之el-table(vue2中)固定列fixed滚动条被固定列盖住

固定列fixed滚动条被固定列盖住 效果图前言解决方案 效果图 前言 在使用fixed固定列的时候会出现滚动条被盖住的情况 解决方案 改变el-table固定列的计算高度即可 .el-table {.el-table__fixed-right,.el-table__fixed {height:auto !important;bottom:15px !important;}}

安装cuda后只在root用户下可见,非root不可见问题

0. 安装cuda和nvidia driver步骤可以参考这篇&#xff1a; https://blog.csdn.net/mygugu/article/details/137474101?spm1001.2014.3001.5502 1.问题记录&#xff1a; 这里记录下安装cuda后遇到的一个奇葩问题&#xff0c;因为安装过程需要root权限&#xff0c;安装后发现…

k8s部署efk

环境简介&#xff1a; kubernetes: v1.22.2 helm&#xff1a; v3.12.0 elasticsearch&#xff1a; 8.8.0 chart包&#xff1a;19.10.0 fluentd: 1.16.2 chart包&#xff1a; 5.9.4 kibana: 8.2.2 chart包&#xff1a;10.1.9 整体架构图&#xff1a; 一、Elasticsearch安装…

Git入门实战教程之创建版本库

一、Git简介 Git是一个分布式版本控制系&#xff0c;分层结构如下&#xff1a; Git分为四层&#xff1a; 1、工作目录 当前正在工作的项目的实际文件目录&#xff0c;我们执行命令git init时所在的地方&#xff0c;也就是我们执行一切文件操作的地方。 2、暂存区 暂存区是…

字符串2s总结

4.字符串 字符串理论基础 什么是字符串 字符串是若⼲字符组成的有限序列&#xff0c;也可以理解为是⼀个字符数组&#xff0c;但是很多语⾔对字符串做了特殊的规定&#xff0c;接下来我来说⼀说C/C中的字符串。 在C语⾔中&#xff0c;把⼀个字符串存⼊⼀个数组时&#xff0c…

前端开发学习笔记 3 (Chrome浏览器调试工具、Emmet语法、CSS复合选择器、CSS元素选择模式、CSS背景)

文章目录 Chrome浏览器调试工具Emmet语法CSS复合选择器后代选择器子选择器并集选择器伪类选择器 CSS元素选择模式元素选择模式概述CSS块标签CSS行内标签CSS行内块标签CSS元素显示模式转换 CSS背景CSS背景颜色CSS背景图片CSS背景图片平铺CSS背景图片位置CSS背景图片固定CSS背景复…

如何高效学习Python编程语言

理解Python的应用场景 不同的编程语言有不同的发展历史和应用场景,了解Python主要应用在哪些领域对于学习它会有很大帮助。Python最初是一种通用脚本语言,主要用于系统级任务自动化。随着时间的推移,它逐步成为数据处理、科学计算、Web开发、自动化运维等众多领域的主要编程语…

第4章 Redis,一站式高性能存储方案,笔记问题

点赞具体要实现功能有哪些&#xff1f; 可以点赞的地方&#xff1a;对帖子点赞&#xff0c;对评论点赞点一次是点赞&#xff0c;再点一次是取消赞统计点赞的数量&#xff08;计数&#xff0c;string&#xff09;&#xff0c;帖子被点赞的数量&#xff0c;某个用户被点赞的数量…

8.java openCV4.x 入门-Mat之多维元组(Tuple)

专栏简介 &#x1f492;个人主页 &#x1f4f0;专栏目录 点击上方查看更多内容 &#x1f4d6;心灵鸡汤&#x1f4d6;我们唯一拥有的就是今天&#xff0c;唯一能把握的也是今天建议把本文当作笔记来看&#xff0c;据说专栏目录里面有相应视频&#x1f92b; &#x1f9ed;文…

【深度学习基础】

打基础日常记录 CNN基础知识1. 感知机2. DNN 深度神经网络&#xff08;全连接神经网络&#xff09;DNN 与感知机的区别DNN特点&#xff0c;全连接神经网络DNN前向传播和反向传播 3. CNN结构【提取特征分类】4. CNN应用于文本 RNN基础1. RNN的本质 词向量模型word2Vec1. 自然语言…

CentOS系统的小小基础

CentOS系统的小小基础 1、基础命令查看系统查看显存 2、常见问题创建文件后出现 E325: ATTENTION Found a swap file by the name ".文件名.swp"自己创建了方便的脚本共所有用户使用yum换源清楚僵尸进程 Linux 使用Anacondapip换源下载安装 NVIDIA Driver 1、基础命令…

语音特征的反应——语谱图

语谱图的横坐标为时间&#xff0c;纵坐标为对应时间点的频率。坐标中的每个点用不同颜色表示&#xff0c;颜色越亮表示频率越大&#xff0c;颜色越淡表示频率越小。可以说语谱图是一个在二维平面展示三维信息的图,既能够表示频率信息,又能够表示时间信息。 创建和绘制语谱图的…

加州大学欧文分校英语基础语法专项课程02:Questions, Present Progressive and Future Tenses 学习笔记

Questions, Present Progressive and Future Tenses Course Certificate 本文是学习 Questions, Present Progressive and Future Tenses 这门课的学习笔记&#xff0c;如有侵权&#xff0c;请联系删除。 文章目录 Questions, Present Progressive and Future TensesWeek 01: …

边缘智能网关为企业数字化转型提供强有力支持-天拓四方

一、企业背景 随着信息技术的飞速发展&#xff0c;企业对于数据处理和通信的需求日益增长。特别是在工业4.0、智能制造等领域&#xff0c;企业面临着海量的数据采集、实时分析、远程监控等挑战。传统的中心化数据处理模式已难以满足这些需求&#xff0c;企业需要寻求一种更加高…

JavaScript - 你知道Ajax的原理吗?如何封装一个Ajax

难度级别:中高级及以上 提问概率:75% 想要实现Ajax,就需要创建它的核心通信对象XMLHttpRequest,通过核心对象的open方法与服务端建立连接,核心对象的send方法可以将请求所需数据发送给服务端,服务端接收到请求并做出响应,我们通过核心对象…

JavaScript(三)-Web APIS

文章目录 DOM事件进阶事件流事件流与两个阶段说明事件捕获事件冒泡阻止冒泡解绑事件 事件委托其他事件页面加载事件元素滚动事件页面尺寸事件 元素尺寸与位置 DOM事件进阶 事件流 什么是事件流 事件流指的是事件完整执行过程中的流动路径 事件流与两个阶段说明 捕获与冒泡 …

windows server 2019-搭建文件共享服务器

一、共享服务器概述 通过网络提供文件共享服务、提供文件下载和上传服务&#xff08;类似FTP服务器&#xff09; 文件共享使用的是CIFS协议&#xff08;微软开发&#xff0c;微软全系服务器都自带此服务&#xff09; FTP服务器对外&#xff08;给客户&#xff09; 文件共享…

04 Python进阶:MySQL-PyMySQL

什么是 PyMySQL&#xff1f; PyMySQL 是一个用于 Python 的纯 Python MySQL 客户端库&#xff0c;提供了与 MySQL 数据库进行交互的功能。PyMySQL 允许 Python 开发人员连接到 MySQL 数据库服务器&#xff0c;并执行诸如查询、插入、更新和删除等数据库操作。 以下是 PyMySQL …

微服务架构下,如何通过弱依赖原则保障系统高可用?

前言 当我初次接触高可用这个概念的时候&#xff0c;对高可用的【少依赖原则】和【弱依赖原则】的边界感模糊&#xff0c;甚至有些“傻傻分不清楚”。这两个原则都关注降低模块之间的依赖关系&#xff0c;但它们之间的确存在某些差异。 那么&#xff0c;「少依赖原则」和「弱…

C#操作MySQL从入门到精通(8)——对查询数据进行高级过滤

前言 我们在查询数据库中数据的时候,有时候需要剔除一些我们不想要的数据,这时候就需要对数据进行过滤,比如学生信息中,我只需要年龄等于18的,同时又要家乡地址是安徽的,类似这种操作专栏第7篇的C#操作MySQL从入门到精通(7)——对查询数据进行简单过滤简单过滤方法就无法…