调用OpenAI大模型2

一、多轮输出调用

通过while循环实现与大模型交互调用,同时也可以保存历史的聊天记录,总结后传入大模型,这样就可以实现对话的连贯性。

from openai import OpenAI
import os
os.environ['OPENAI_BASE_URL']=''
os.environ['OPENAI_API_KEY']=''

client = OpenAI()

messages=[]
while True:
  content = input('User:')
  messages.append({'role': 'user', 'content': content})
  print(messages)
  responses=client.chat.completions.create(
    model='gpt-3.5-turbo',
    messages=messages
  )
  asst_content=responses.choices[0].message.content
  print('Assitant:',asst_content)
  messages.append({'role':'assistant','content':asst_content})
  print(messages)
  # exit()


 二、调用OpenAI的embeding模型

from openai import OpenAI
import os
os.environ['OPENAI_BASE_URL']=''
os.environ['OPENAI_API_KEY']=''

client = OpenAI()
responses=client.embeddings.create(
  model="text-embedding-ada-002",
  input=["感冒了吃什么药好得快?", "阿莫西林能治感冒吗?"],
  encoding_format="float"
)
print(responses.data[0].embedding)
print(len(responses.data[0].embedding))
for item in responses.data:
    content = item.embedding
    print(len(content))
# [0.006358565, 0.016525812, 0.018991774, -0.022568064,..., -0.017765248]


三、召回相似文档

我们对文档向量化的主要目标是可以实现各种数学运算,比如计算相似度。RAG文档文档的基本原理也是通过召回相关的文档,然后回答用户的问题。

from openai import OpenAI
import numpy as np
import os
os.environ['OPENAI_BASE_URL']=''
os.environ['OPENAI_API_KEY']=''


client = OpenAI()

query = '感冒吃什么药效果好?可以吃阿莫西林吗?'

# 查询语句向量化
query_resp = client.embeddings.create(
    model="text-embedding-ada-002",
    input=query
)

query_vec = np.array(query_resp.data[0].embedding)
print(query_vec)

# 备选文本向量化
question_texts = [
    '什么叫感冒? / 感冒是一种什么病?',
    '感冒一般是由什么引起的?/ 什么会导致感冒?',
    '感冒会有哪些症状?/ 感冒有哪些临床表现?',
    '感冒吃什么药好得快?/ 感冒怎么治?',
    '得了感冒去医院挂什么科室的号?',
    '感冒要怎么预防?',
    '感冒换着有什么禁忌?/ 感冒不能吃什么?',
    '感冒要做哪些检查?',
    '感冒能治好吗?/ 感冒治好的几率有多大?',
    '感冒的并发症有哪些?',
    '阿莫西林能治那些病?'
]

question_resp=client.embeddings.create(
    model="text-embedding-ada-002",
    input=question_texts
)
question_vecs = []
for item in question_resp.data:
    question_vecs.append(np.array(item.embedding))
print(question_vecs)

# 计算欧式距离,距离越小,相似度越高
import numpy as np

l2_distances = np.linalg.norm(query_vec - question_vecs, axis=1)
closest_indices = np.argsort(l2_distances)[:3]
# print(closest_indices)

for idx in closest_indices:
    print(question_texts[idx])


  • 21
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木珊数据挖掘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值