当前位置:   article > 正文

OPC UA遇见chatGPT

OPC UA遇见chatGPT

     

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

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

构建OPC UA 信息模型

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

代码

  1. from openai import OpenAI
  2. client = OpenAI(
  3. api_key="sk-xxxxxx",
  4. base_url="https://api.chatanywhere.tech/v1"
  5. )
  6. completion = client.chat.completions.create(
  7. model="gpt-3.5-turbo",
  8. messages=[
  9. {"role": "system", "content": "creat opc ua information model ,output modeset2 xml format"},
  10. {"role": "user", "content": "typename motor ,attributes include current,voltage temperature,power data type float"}
  11. ],
  12. temperature=0.3,
  13. )
  14. print(completion.choices[0].message.content)

结果

  1. runfile('E:/yao2024/python2024/chatgptSimple.py', wdir='E:/yao2024/python2024')
  2. ```xml
  3. <?xml version="1.0" encoding="UTF-8"?>
  4. <opc:Model xmlns:opc="http://opcfoundation.org/UA/2011/03/UANodeSet.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  5. <opc:ObjectType NodeId="ns=1;i=1001" BrowseName="MotorType">
  6. <opc:DisplayName>Motor</opc:DisplayName>
  7. <opc:References>
  8. <opc:Reference ReferenceType="HasProperty" IsForward="false">i=47</opc:Reference>
  9. <opc:Reference ReferenceType="HasProperty" IsForward="false">i=48</opc:Reference>
  10. <opc:Reference ReferenceType="HasProperty" IsForward="false">i=49</opc:Reference>
  11. <opc:Reference ReferenceType="HasProperty" IsForward="false">i=50</opc:Reference>
  12. </opc:References>
  13. </opc:ObjectType>
  14. <opc:Variable NodeId="ns=1;i=47" BrowseName="Current" DataType="Float">
  15. <opc:DisplayName>Current</opc:DisplayName>
  16. </opc:Variable>
  17. <opc:Variable NodeId="ns=1;i=48" BrowseName="Voltage" DataType="Float">
  18. <opc:DisplayName>Voltage</opc:DisplayName>
  19. </opc:Variable>
  20. <opc:Variable NodeId="ns=1;i=49" BrowseName="Temperature" DataType="Float">
  21. <opc:DisplayName>Temperature</opc:DisplayName>
  22. </opc:Variable>
  23. <opc:Variable NodeId="ns=1;i=50" BrowseName="Power" DataType="Float">
  24. <opc:DisplayName>Power</opc:DisplayName>
  25. </opc:Variable>
  26. </opc:Model>

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

生成结构化数据

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

程序

  1. import json
  2. import os
  3. from langchain_openai import ChatOpenAI
  4. from langchain.agents import initialize_agent, Tool
  5. from langchain.agents.mrkl import prompt
  6. os.environ['OPENAI_API_KEY'] ="sk-xxxxxxxx"
  7. os.environ['OPENAI_BASE_URL'] ="https://api.chatanywhere.tech/v1"
  8. def get_template(productClass):
  9. #print(productClass)
  10. answer = [
  11. {"type": "product type",
  12. "brand": "product brand",
  13. "manufacture":"product manufacture",
  14. "color":"color of prodcts",
  15. "size":"product size"}
  16. ]
  17. return json.dumps(answer)
  18. def device_control(device_id):
  19. print(device_id)
  20. status=True
  21. answer = [
  22. {"状态": status}
  23. ]
  24. return json.dumps(answer)
  25. def lang_chain_agent(text):
  26. llm = ChatOpenAI(model_name="gpt-3.5-turbo",base_url="https://api.chatanywhere.tech/v1")
  27. tools = [
  28. Tool(
  29. name = "get_template",
  30. func=get_template,
  31. description="use this tool when you need to get product model tempplate ,To use the tool, you must provide chinese product class",
  32. )
  33. ]
  34. agent = initialize_agent(
  35. tools,
  36. llm,
  37. agent="zero-shot-react-description",
  38. agent_kwargs=dict(suffix='Answer should be json. ' + prompt.SUFFIX),
  39. verbose=True,
  40. return_intermediate_steps=True)
  41. response = agent({"input": text})
  42. return response
  43. lang_chain_agent("根据如下数据生成符合模型样板的json 产品数据, 类型 足球 品牌 小少年 制造商 鹰派运动用品公司 颜色 红色 尺寸 12 英寸")

结果

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

chatGPT 访问OPC UA 服务器

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/414271
推荐阅读
相关标签
  

闽ICP备14008679号