# Ignition-AI on ChatGPT (Must have paid account, Sorry)

**URL:** <https://forum.inductiveautomation.com/t/ignition-ai-on-chatgpt-must-have-paid-account-sorry/87698>\
**Category:** General Discussion\
**Created:** [March 21, 2024, 4:50pm UTC](https://forum.inductiveautomation.com/t/ignition-ai-on-chatgpt-must-have-paid-account-sorry/87698 "2024-03-21T16:50:49Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![jiml](https://avatars.discourse-cdn.com/v4/letter/j/779978/32.png) [@jiml](https://forum.inductiveautomation.com/u/jiml)\
**Post date:** [March 21, 2024, 4:50pm UTC](https://forum.inductiveautomation.com/t/ignition-ai-on-chatgpt-must-have-paid-account-sorry/87698/1 "2024-03-21T16:50:49Z")

</div>

Large Language Models (LLMs) like GPT-4 offer invaluable assistance across various tasks, enhancing creativity and efficiency with their ability to generate human-like text. However, they are not foolproof solutions; LLMs can "hallucinate" information, creating convincing yet inaccurate content. It's essential to view them as tools that augment human capabilities, not as standalone arbiters of truth. The synergy between human oversight and LLMs ensures the best outcomes, leveraging their strengths while mitigating their limitations.

That said check this out.

[Ignition-AI](https://chat.openai.com/g/g-ya5Nlc5kG-ignition-ai)

---

<div class="post-metadata">

**Author:** ![Transistor](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/transistor/32/3380_2.png) [@Transistor](https://forum.inductiveautomation.com/u/Transistor)\
**Post date:** [March 21, 2024, 4:51pm UTC](https://forum.inductiveautomation.com/t/ignition-ai-on-chatgpt-must-have-paid-account-sorry/87698/2 "2024-03-21T16:51:55Z")

</div>

This looks bogus or spam.

---

<div class="post-metadata">

**Author:** ![jiml](https://avatars.discourse-cdn.com/v4/letter/j/779978/32.png) [@jiml](https://forum.inductiveautomation.com/u/jiml)\
**Post date:** [March 21, 2024, 4:53pm UTC](https://forum.inductiveautomation.com/t/ignition-ai-on-chatgpt-must-have-paid-account-sorry/87698/3 "2024-03-21T16:53:14Z")

</div>

I asked Paul, he said I could post it.

---

<div class="post-metadata">

**Author:** ![bkarabinchak.psi](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bkarabinchak.psi/32/83567_2.png) [@bkarabinchak.psi](https://forum.inductiveautomation.com/u/bkarabinchak.psi)\
**Post date:** [March 21, 2024, 4:57pm UTC](https://forum.inductiveautomation.com/t/ignition-ai-on-chatgpt-must-have-paid-account-sorry/87698/4 "2024-03-21T16:57:02Z")

</div>

I have a paid account, I am checking it out now. If someone can provide me a challenging realistic Ignition question I don't mind testing it out and reporting back.

I gave it one to test the waters

Prompt:  
User:  
Write me a script that has a function that accepts a tagPaths parameter and a tagValues parameter. It tries to do a system.tag.writeBlocking with the parameters and inspects the return values. If everything is not good, it raises a custom exception lets call TagWriteException and the string should be the list of tag paths that had issue and what those issues were (up to 100 character limit)

Result: (ignoring all non code response)

```auto
class TagWriteException(Exception):
    def __init__ (self, message):
        super(TagWriteException, self). __init__ (message)

def write_tags_and_check(tagPaths, tagValues):
    """
    Attempts to write values to the specified tag paths and checks for errors.

    :param tagPaths: A list of tag paths to write to.
    :param tagValues: A list of values corresponding to the tag paths.
    :raises TagWriteException: If any tag writes are unsuccessful.
    """
    if len(tagPaths) != len(tagValues):
        raise ValueError("The length of tagPaths and tagValues must be the same.")

    # Attempt to write to the tags
    results = system.tag.writeBlocking(tagPaths, tagValues)

    # Check for any issues in the results
    errorMessages = []
    for i, result in enumerate(results):
        if not result.isGood():
            errorMessages.append("{}: {}".format(tagPaths[i], result.toString()))

    # If there are errors, raise an exception
    if errorMessages:
        errorMessage = "; ".join(errorMessages)[:100] # Limiting to 100 characters
        raise TagWriteException("Issues with tag writes: " + errorMessage)

# Example usage
try:
    write_tags_and_check(["path/to/tag1", "path/to/tag2"], [123, 456])
except TagWriteException as e:
    print("Error: " + str(e))
except ValueError as e:
    print("Error: " + str(e))

```

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [March 21, 2024, 5:07pm UTC](https://forum.inductiveautomation.com/t/ignition-ai-on-chatgpt-must-have-paid-account-sorry/87698/5 "2024-03-21T17:07:26Z")

</div>

It's real, as in Jim's a real person.  
I'll say for the record that the one question I asked got a very convincing hallucination that you'd have to be well versed to know was wrong:

> **[ChatGPT](https://chat.openai.com/share/ffc9c0b0-0639-4998-98b0-ac25db15897a)**
>
> A conversational AI system that listens, learns, and challenges

I really think there's just not enough context about Ignition to get a good hitrate with LLMs. Great for general purpose programming knowledge, Python questions, etc - bad with specific domain contexts where there's exactly one right answer.

---

<div class="post-metadata">

**Author:** ![bkarabinchak.psi](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bkarabinchak.psi/32/83567_2.png) [@bkarabinchak.psi](https://forum.inductiveautomation.com/u/bkarabinchak.psi)\
**Post date:** [March 21, 2024, 5:08pm UTC](https://forum.inductiveautomation.com/t/ignition-ai-on-chatgpt-must-have-paid-account-sorry/87698/6 "2024-03-21T17:08:49Z")

</div>

It always seems to revert back to python3 syntax as well with f strings and similar no matter how much you ask it to write in python2 . I am guessing most of the training data is python3 (compared to python2) and it's just unavoidable.
