๐งช [Plant Simulation Study #20] – ChatGPT ํ์ฉํ ๋์งํธ ํธ์ ๊ณต์ ์ ์ด ์๋ฎฌ๋ ์ด์ (์์จ๊ณต์ฅ ๊ตฌํ ์์ )

๐ฌ ๊ฐ์
์ด๋ฒ Study์์๋ Siemens Plant Simulation๊ณผ OpenAI์ ChatGPT API๋ฅผ ์ฐ๊ฒฐํด
AI๊ฐ ์ค์๊ฐ์ผ๋ก ๊ณต์ ์ ํ๋จํ๊ณ , ์๋ฎฌ๋ ์ด์
๋ชจ๋ธ์ ์์จ์ ์ผ๋ก ์ ์ดํ๋ ๋์งํธ ํธ์ ๊ตฌ์กฐ๋ฅผ ์คํํฉ๋๋ค.
Python๊ณผ ChatGPT๋ฅผ ํ์ฉํด, ์๋ฎฌ๋ ์ด์
๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก
์ปจ๋ฒ ์ด์ด ํ๋ฆ ์ ์ด, ๋ณ์ ์๋ ์กฐ์ , ์ํฉ ์ธ์ ๊ธฐ๋ฐ ๊ฒฐ์ ๋ก์ง์
AI๊ฐ ์ง์ ์ํํ๋ ๊ตฌ์กฐ๋ฅผ ๊ตฌํํ์์ต๋๋ค.
์ด ์คํ์ ๋จ์ํ ์๋ํ ๋ชจ๋ธ์ ๋์ด์,
์์จ๊ณต์ฅ(AI-operated Smart Factory) ๊ฐ๋
์ ๊ฐ๊น์ด ์๋ฎฌ๋ ์ด์
์ฌ๋ก์
๋๋ค.
์ ํ๋ธ ๋งํฌ : https://youtu.be/mDQOXU9y6mk
๐ป ์ฐ๋ ๊ตฌ์กฐ ๋ฐ ํต์ฌ ๊ตฌํ
| ๊ธฐ์ ์คํ | Plant Simulation + Python + OpenAI ChatGPT API |
| ํต์ฌ ๋ชฉ์ | AI ๊ธฐ๋ฐ ์ถ๊ตฌ ์ ๋ต(Exit Strategy) ์ ์ด |
| ํต์ ๋ฐฉ์ | Python → ChatGPT API ํธ์ถ → ์๋ต๊ฐ → ๋ณ์ ์ ์ฉ |
| ์ฃผ๊ธฐ ์คํ | 5์ด๋ง๋ค Python ์คํฌ๋ฆฝํธ ์คํ (๋ฃจํ ์ฐ๋) |
๐ง Python ๋ด ํต์ฌ ์ฝ๋
import openai
import pandas as pd
obj = root.EXIT_Seq_SET.Value
set_A = root.Con1_nummu.Value
set_B = root.Con2_nummu.Value
# OpenAI API ํค ์ค์
api_key = "PUT API HERE" # ์ฌ๊ธฐ์ ์ค์ OpenAI API ํค๋ฅผ ์
๋ ฅํ์ธ์.
openai.api_key = api_key
# ChatGPT API ํธ์ถ ํจ์
def chat_with_gpt(prompt, model="gpt-4", temperature=0):
response = openai.ChatCompletion.create(
model=model,
messages=[
{"role": "system", "content": "You are a decision-making assistant."},
{"role": "user", "content": prompt}
],
temperature=temperature
)
return response.choices[0].message['content'].strip()
# ํ๋กฌํํธ ์ค์
user_input = f"""
Con1 ์ ์ ํ ๊ฐ์ :
{set_A}
Con2 ์ ์ ํ ๊ฐ์ :
{set_B}
0. ์๋ ์กฐ๊ฑด๋ค์ ํ์ธํ๊ณ Con1 ๊ณผ Con2 ์ค ํ ๊ณณ์ ์ถ๋ ฅํด๋ผ.
1. if {set_A} > {set_B} , Con1 ์ถ๋ ฅ
2. if {set_A} < {set_B} , Con2 ์ถ๋ ฅ
2. if {set_A} = {set_B} , Con2 or Con1 50% ํ๋ฅ ๋ก ๋๋ค ์ถ๋ ฅ
5. ์ค๋ช
์์ด ์ ํํ ๋์ค ํ๋์ ์ด๋ฆ๋ง ์ ์ด์ฃผ์ธ์.
"""
# API ํธ์ถ ๋ฐ ์๋ต์ obj ๋ณ์์ ์ ์ฅ
try:
reply = chat_with_gpt(user_input)
print("๐น ChatGPT Answer (์๋ณธ):\n", reply)
# ์๋ต์ obj ๋ณ์์ ์ง์ ์ ์ฅ
obj = reply # ๊ธฐ๋ํ ๋จ์ผ ๊ฐ์ธ A1, A2, A3, A4, A5 ์ค ํ๋๋ฅผ ์ ์ฅ
print("๐น done:", obj)
except Exception as e:
print("API ํธ์ถ ์ค ์ค๋ฅ ๋ฐ์:", str(e))
root.EXIT_Seq_SET.value = obj
- prompt์๋ ํ์ฌ ๊ณต์ ์ํ์ ์๋๋ฆฌ์ค ๋งฅ๋ฝ์ด ํฌํจ๋จ
- ์๋ต ๊ฒฐ๊ณผ์์ ๋ณ์๊ฐ(์: Con1, Con2)์ ํ์ฑํ์ฌ
Plant Simulation ๋ด์ ์ ์ฉ → ์ค์ ๋ผ์ธ ๋์ ๋ณ๊ฒฝ
๐งช ์คํ ํ๋ฆ ๋ฐ ์์ฐ
- Python Script ์คํ
- 5์ด ๊ฐ๊ฒฉ์ผ๋ก ChatGPT์ ํ์ฌ ์ํ ์ ๋ฌ
- "Run Python (5 Sec Interval)" ์ค์

- ChatGPT ์๋ต ํ์ธ
- ๋ชจ๋ธ ์ค๋ฅธ์ชฝ ๋ก๊ทธ ์ฐฝ์ ์ค์๊ฐ ์๋ต ํ์
- "Answered by ChatGPT" ์ถ๋ ฅ๋จ
- ์๋ฎฌ๋ ์ด์
๋ชจ๋ธ ์ ์ด
- ์๋ต ๋ด์ฉ์ ๋ฐ๋ผ Con1, Con2 ๋ณ์ ์ ์ด
- ์ปจ๋ฒ ์ด์ด ํ๋ฆ์ด ๋ฐ๋๋ฉฐ ์ค์ ๋ชจ๋ธ ๋์๋ ๋ณ๊ฒฝ๋จ
- "Line Operated by ChatGPT" ๋ผ๋ฒจ ํ์

๐ ๊ธฐ๋ ํจ๊ณผ ๋ฐ ์์ฉ ์ฌ๋ก
โ
์ค๋งํธํฉํ ๋ฆฌ ์๋ฎฌ๋ ์ด์
๊ต์ก ์ฝํ
์ธ ๋ก ํ์ฉ ๊ฐ๋ฅ
โ
๋์งํธ ํธ์ ๊ธฐ๋ฐ์ AI ์ ์ด ์ ๋ต ์ฌ์ ๊ฒ์ฆ ๋ชจ๋ธ๋ง
โ
ChatGPT๋ฅผ ์ด์ฉํ ์์ฌ๊ฒฐ์ ์๋ฎฌ๋ ์ด์
ํ๋ ์์ํฌ ๊ตฌ์ถ
โ
ํฅํ RAG / GPT Agents ์ ๊ฒฐํฉ ์ ๋์ ์๋๋ฆฌ์ค ์์ฑ ๊ฐ๋ฅ
๐ง ๋ง๋ฌด๋ฆฌํ๋ฉฐ
์ด๋ฒ Study๋ LLM(Large Language Model)์ธ ChatGPT๋ฅผ ํ์ฉํ์ฌ ๊ณต์ ์๋ฎฌ๋ ์ด์
์ ์ง๋ฅ์ ์ผ๋ก ์ ์ดํ ์ฌ๋ก์
๋๋ค.
์๋ฎฌ๋ ์ด์
์ ๋ ์ด์ ์ฌ๋์ด ์ผ์ผ์ด ์ ์ดํ๋ ๋๊ตฌ๊ฐ ์๋๋ผ,
AI์ ํ์
ํ์ฌ ์ค์ค๋ก ํ๋จํ๊ณ ์์ง์ด๋ ๋์งํธ ํธ์ ์คํ ํ๊ฒฝ์ผ๋ก ์งํํ๊ณ ์์ต๋๋ค.