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
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는 생각보다 예의바르게 대화를 마칠 줄 안다는 것을 알게 되었다.