Gpt와 Bard 대화시키기

yshaarj·2023년 5월 15일
0

어케 했음?

목록 보기
3/8
from Bard import Chatbot
import openai


def bard(prompt):
    chatbot = Chatbot(cookie)

    ans = chatbot.ask(prompt)

    return ans["content"]


def gpt(prompt) -> str:
    openai.api_key = openai_api

    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[
            {
                "role": "user",
                "content": f"{prompt}",
            }
        ],
    )

    ans = response["choices"][0]["message"]["content"]

    return ans


if __name__ == "__main__":
    prompt = "이제부터 모든 대화는 한국어로 진행됩니다. 그리고 다음 제시문을 보고 의견을 내세요.\n파이썬에서 아주 긴 길이의 리스트 내부에서 특정 원소끼리 가장 빠르게 연산하는 방법은?"
    count = 1

    while count < 5:
        if count == 1:
            ans1 = gpt(prompt)
            print(f"[GPT]: {ans1}\n\n")

            ans2 = bard(prompt)
            print(f"[BARD]: {ans2}\n\n")

            print("===================================================")
        else:
            gpt_ans = gpt(ans2)
            print(f"[GPT]: {gpt_ans}\n\n")

            ans2 = bard(gpt_ans)
            print(f"[BARD]: {ans2}\n\n")

        count += 1

먼저 gpt와 bard가 질문에 각각 대답하고

bard의 답변을 gpt에 전달, 다시 gpt의 답변을 bard에 전달하는 식으로 구성했다.

결과는 다음과 같다.


[GPT]: 리스트 컴프리헨션을 사용하여 새로운 리스트를 생성하고 연산할 수 있습니다. 또는 numpy를 사용하여 배열을 사용할 수 있습니다. 마지막으로, 리스트 내부에서 
최적화된 탐색 알고리즘을 사용해 볼 수 있습니다.


[BARD]: 파이썬에서 아주 긴 길이의 리스트 내부에서 특정 원소끼리 가장 빠르게 연산하는 방법은 `zip()` 함수를 사용하는 것입니다. `zip()` 함수는 두 개의 리스트를 
입력으로 받아 각 인덱스에 있는 요소끼리 묶어서 새로운 리스트를 반환합니다. 예를 들어, `a = [1, 2, 3]`, `b = [4, 5, 6]`이면 `zip(a, b)`는 `[(1, 4), (2, 5), (3, 
6)]`을 반환합니다. 따라서 두 개의 긴 리스트를 `zip()` 함수로 묶은 다음 원하는 연산을 수행하면 매우 빠르게 수행할 수 있습니다.


===================================================
[GPT]: 예를 들어, 두 개의 리스트 `a`, `b`가 있고 두 리스트의 각 원소를 곱한 값을 새로운 리스트 `c`에 저장하려면 다음과 같은 코드를 작성할 수 있습니다.

python
a = [1, 2, 3, ...]
b = [4, 5, 6, ...]

c = [x * y for x, y in zip(a, b)]


`zip(a, b)`는 각각의 리스트에서 같은 인덱스에 있는 원소를 묶어서 새로운 튜플을 만들고, 이를 `for` 루프에서 순회하면서 각 튜플에서 첫 번째 원소와 두 번째 원소를
 곱한 값을 `c` 리스트에 넣어줍니다. 이 방법은 `a`와 `b`가 아주 긴 리스트일 경우에도 매우 빠르게 연산을 수행할 수 있습니다.


[BARD]: 네, 있습니다. 다음은 Python의 zip() 함수에 대한 몇 가지 예입니다.

* 두 개의 리스트에서 동일한 인덱스의 항목을 튜플로 결합합니다.

python
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> list(zip(a, b))
[(1, 4), (2, 5), (3, 6)]


* 두 개의 리스트에서 동일한 인덱스의 항목을 하나의 리스트로 결합합니다.

python
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> [x * y for x, y in zip(a, b)]
[4, 10, 18]


* 두 개의 리스트에서 동일한 인덱스의 항목을 하나의 문자열로 결합합니다.

python
>>> a = ['a', 'b', 'c']
>>> b = ['d', 'e', 'f']
>>> ''.join(x + y for x, y in zip(a, b))
'abcde'


* 두 개의 리스트에서 동일한 인덱스의 항목을 하나의 딕셔너리로 결합합니다.

python
>>> a = ['name', 'age']
>>> b = ['John Doe', '30']
>>> dict(zip(a, b))
{'name': 'John Doe', 'age': '30'}


zip() 함수는 데이터를 결합하는 데 매우 유용한 도구입니다. 다양한 방법으로 사용할 수 있으며 코드를 작성하는 시간을 절약하는 데 도움이 될 수 있습니다.


[GPT]: 감사합니다! 매우 유용한 정보였습니다. 저도 Python에서 데이터를 처리할 때 zip() 함수를 자주 사용하기 때문에 더욱 많은 활용법을 알게 된 것 같습니다.


[BARD]: 천만에요! 저는 항상 도움이 되어 기쁩니다. 다른 질문이 있으신가요?


[GPT]: 아니요, 감사합니다. 좋은 하루 되세요!

결론

ai는 생각보다 예의바르게 대화를 마칠 줄 안다는 것을 알게 되었다.

0개의 댓글