范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

建立一个能搜索正确数据源并准确回答问题的ChatGPT

  在这个例子中,我们将要求GPT在用户提出问题时挑选合适的数据集进行搜索,然后回答用户的问题。
  ,否则你可以通过使用Embedbase Cloud而不是自己运行它来简化这个例子。
  如果是这样,你可以跳到种子数据集部分。安装
  在虚拟环境中安装所需的依赖项:virtualenv env source env/bin/activate pip install embedbase pgvector psycopg2 openai 启动Postgres作为一个Embedbase数据库
  为Embedbase数据库运行一个Postgres实例。docker run -d --name pgvector -p 8080:8080 -p 5432:5432   -e POSTGRES_DB=embedbase -e POSTGRES_PASSWORD=localdb   -v data:/var/lib/postgresql/data ankane/pgvector 启动嵌入基地
  创建一个新文件main.py,代码如下:import os from embedbase import get_app from embedbase.database.postgres_db import Postgres from embedbase.embedding.openai import OpenAI import uvicorn OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY") app = (       get_app()       .use_embedder(OpenAI(OPENAI_API_KEY))       .use_db(Postgres())       .run()   ) if __name__ == "__main__":     uvicorn.run("main:app", reload=True)
  用以下命令启动Embedbase应用程序:python3 main.py 种子数据集
  我们需要在Embedbase中添加一些数据来询问ChatGPT。import json import requests import fire   # Set the Embedbase API URL EMBEDBASE_API_URL = "http://localhost:8000" # if using embedbase cloud, add your api key to the headers # EMBEDBASE_API_KEY = ""   def seed_dataset():     animals = {         "lion": {"weight": 190, "height": 1.2, "speed": 80},         "elephant": {"weight": 5000, "height": 3.2, "speed": 40},         "giraffe": {"weight": 800, "height": 5.5, "speed": 60},         "zebra": {"weight": 350, "height": 1.5, "speed": 60},         "rhinoceros": {"weight": 2300, "height": 1.8, "speed": 45},         "crocodile": {"weight": 1000, "height": 4.5, "speed": 20},         "hippopotamus": {"weight": 1500, "height": 1.5, "speed": 30},         "cheetah": {"weight": 60, "height": 0.8, "speed": 110},         "kangaroo": {"weight": 80, "height": 1.5, "speed": 56},         "penguin": {"weight": 30, "height": 1.1, "speed": 10},     }     cars = [         {"make": "Toyota", "model": "Camry", "year": 2022},         {"make": "Honda", "model": "Civic", "year": 2021},         {"make": "Ford", "model": "F-150", "year": 2023},         {"make": "Tesla", "model": "Model S", "year": 2022},         {"make": "Chevrolet", "model": "Corvette", "year": 2021},         {"make": "Jeep", "model": "Wrangler", "year": 2022},         {"make": "BMW", "model": "X5", "year": 2023},         {"make": "Mercedes-Benz", "model": "S-Class", "year": 2022},         {"make": "Audi", "model": "A4", "year": 2021},         {"make": "Lamborghini", "model": "Aventador", "year": 2022},     ]       # clear the dataset just in case it already exists     requests.get(f"{EMBEDBASE_API_URL}/v1/animals/clear",         # if using embedbase cloud, add your api key to the headers         # headers={         #     "Authorization": "Bearer " + EMBEDBASE_API_KEY,         # },     )     requests.get(f"{EMBEDBASE_API_URL}/v1/cars/clear",         # if using embedbase cloud, add your api key to the headers         # headers={         #     "Authorization": "Bearer " + EMBEDBASE_API_KEY,         # },     )       # seed the animals dataset     requests.post(         f"{EMBEDBASE_API_URL}/v1/animals",         json={"documents": [{"data": json.dumps(animal)} for animal in animals]},         # if using embedbase cloud, add your api key to the headers         # headers={         #     "Authorization": "Bearer " + EMBEDBASE_API_KEY,         # },     )       # seed the cars dataset     requests.post(         f"{EMBEDBASE_API_URL}/v1/cars",         json={"documents": [{"data": json.dumps(car)} for car in cars]},         # if using embedbase cloud, add your api key to the headers         # headers={         #     "Authorization": "Bearer " + EMBEDBASE_API_KEY,         # },     )   if __name__ == "__main__":     fire.Fire({         "seed": seed_dataset,     })python3 ask.py seed 搜索
  我们现在将创建我们应用程序的主要逻辑。我们将要求GPT在用户提出问题时挑选正确的数据集进行搜索。
  这个过程将按原样进行:
  1. 用户提出一个问题
  2. GPT将查询`/datasets`以获得数据集的列表
  3. GPT将用所选择的数据集和问题查询`/search`。
  4. GPT将返回结果import re import os import json import requests import openai import fire   # Set the Embedbase API URL EMBEDBASE_API_URL = "http://localhost:8000"     def get_datasets():     response = requests.get(         f"{EMBEDBASE_API_URL}/v1/datasets",         # if using embedbase cloud, add your api key to the headers         # headers={         #     "Authorization": "Bearer " + EMBEDBASE_API_KEY,         # },     )     return [e["dataset_id"] for e in response.json()["datasets"]]     def search_dataset(dataset_id, query):     payload = {"query": query, "top_k": 3}     response = requests.post(         f"{EMBEDBASE_API_URL}/v1/{dataset_id}/search", json=payload,         # if using embedbase cloud, add your api key to the headers         # headers={         #     "Authorization": "Bearer " + EMBEDBASE_API_KEY,         # },     )     return [e["data"] for e in response.json()["similarities"]]
  上述代码将被用来查询Embedbase API。# ... def ask_question(question, openai_model: str = "gpt-3.5-turbo"):     datasets = get_datasets()       # Prompt for GPT     prompt = f"Given the following datasets: "     for dataset in datasets:         prompt += f"- {dataset} "     prompt += f" Choose the best dataset to search and answer the following question: {question}"       # Call GPT     response = openai.ChatCompletion.create(         model=openai_model,         messages=[             {                 "role": "system",                 "content": "You are a helpful assistant that select a dataset to search for a given question."                 "You always say ONLY the dataset name, nothing else. You are given a list of datasets and a question. "                 "For example, if the list of datasets is - plants - animals - cars - fruits - vegetables "                 "and the question is: What is the fastest animal?, you would say: [animals]",             },             {"role": "user", "content": prompt},         ],     )       chosen_dataset = response.choices[0].message.content.strip()     print(f"GPT chose the dataset: {chosen_dataset}")       # extract the dataset name from the output of GPT     # eg [animals] -> animals     chosen_dataset = re.sub(r"[|]", "", chosen_dataset)     search_results = search_dataset(chosen_dataset, question)       # Call GPT again to answer the question based on the search results     prompt = (         f"Based on the following search results, answer the question: "{question}" "     )     for result in search_results:         prompt += f"- {result} "       response = openai.ChatCompletion.create(         model=openai_model,         messages=[             {                 "role": "system",                 "content": "You are a helpful assistant that answers questions based on the provided search results.",             },             {"role": "user", "content": prompt},         ],     )       answer = response.choices[0].message.content.strip()       return answer
  上述代码将被用来调用GPT来提问。现在添加一些小的逻辑,当用户提出问题时调用上述函数。 def main(openai_key: str = None, openai_model: str = "gpt-3.5-turbo"):     openai.api_key = openai_key or os.environ.get("OPENAI_API_KEY")     question = input("Ask a question: ")     answer = ask_question(question, openai_model)     print(f"Answer: {answer}") if __name__ == "__main__":     fire.Fire({               "ask": main,               "seed": seed_dataset,           })
  现在你可以运行应用程序并提出问题。python3 ask.py ask --openai_key    # feel free to add "--openai_model gpt-4" if you have access to it

常规赛首周总结路人眼中的摆烂队现状NBA20222023赛季的常规赛自10月19日开赛已经进行了一周,除了雄鹿队只打了两场比赛之外,所有球队都已经进行了34场比赛。赛季开始前粉丝心中必然会为NBA各球队划分一个档次王锋丨为了孩子,请努力成为更好的自己我和蛤蟆先生去看心理医生(下文简称蛤蟆先生)这本书还是挺有渊源的,从今年3月份到现在10月份,我和它发生过多次的交集,最终将这本书听了一遍,读了一遍。冥冥之中自有天意,这本书似乎就鹤岗又火了,它现在是精神上的北上广一座衰败的城市,正在接纳那些在大城市打拼中被推向岸边即将搁浅的边缘人。这既让人感到温暖,又让人感到无奈,甚至还有那么一点儿幽默。冰川思想库特约撰稿丨牛角10月18日,黑龙江鹤岗。一苦难是我们精神家园如果苦难只认为是苦难,那它真的是苦难。如果能从苦难中得到精神上营养,那你会从苦难中如凤凰涅槃。得到更高人生境界。我曾看过一篇报道虔诚的佛教徒,通过自残自己身体,用铁丝穿刺自己肉体,珠海湾仔旅游码头澳门环岛游是招牌珠海湾仔旅游码头,就在澳门内港的对面,与澳门仅隔前山河入海口,可谓近在咫尺。沿河岸往前山南屏方向,正常人大概五分钟的步行路程,便是湾仔口岸。如众所知的原因,澳门渡轮上海市区最大地肤花海,又萌又可爱,这个秋天不要错过这两年的网红植物,要数地肤了。地肤又名扫帚草,孔雀松,可入药,但在城市,一般都用来观赏,一蓬一蓬的圆球形,夏天绿色,秋天开始变红,真是又萌又可爱。以前上海市区的童鞋要看地肤,只能去甘孜州疾控中心健康提示(10月16日)在四川西部,有着离尘世最远的地方神山圣湖冰川草原它超出了每个人对隐世天堂的想象是的,这里就是甘孜州它景色迷人,令人向往如您近日有来州旅行计划今日份甘孜州疫情防控指南快了解一下吧最新满洲里,文化交汇城景一体满洲里位于中国雄鸡版图的鸡冠处,这里西临蒙古国,北接俄罗斯,是我国最大的陆路口岸城市,享有东亚之窗的美誉。作为内蒙古一座蜚声中外的口岸名城,处在该城西面的满洲里国门,不仅是中俄重要南非游记(1)开普敦上帝的餐桌桌山2013年1月16日我们在上海浦东机场2号航站楼集合,准备去南非的开普敦。南非共和国,简称南非。地处南半球,位于非洲大陆的最南端,陆地面积为1219090平方公里,其东南西三面被印节日节日欢喜欢喜十一假期你是么样岔倒玩滴楚天都市报极目新闻记者陈凌燕绘图刘阳十一长假一结束,大家又聚到了茶馆里。7天假期就是快乐时间,各种玩法花样翻番,今天回到我们的茶馆,几天没见面,老朋友啊,心里蛮多想念!楚小丫招呼大龙河口,游览安徽龙河口水库记述龙河口水库,位于安徽的舒城县,是安徽省的一个大型水库。1996年4月,26年前我曾陪同炮院的几位老首长,到这个水库去看过一趟。2022年10月9日,我与两位同事,一位老领导,驱车2
人间清醒悲喜自渡孩子小时候,要主动关心长大了要告诉孩子你有什么需要主动找大人商量。界限和距离,什么关系都适用。养孩子是良心活更是技术活爱孩子不缺热情只缺方法。情绪稳定,学会尊重和沟通。从体验中摸索人间三大清醒一人间三大清醒接受父母的平庸,接受自己的平庸,接受自己的平庸!二一个人有多好不重要,对你好才重要,真心对你好的人都在细节里,人会说谎,细节不会,爱在细节,不爱也是。三时光易逝,年华一个人最顶级的魅力真诚,清醒,知足我在头条搞创作第二期作者在水一方(富书专栏作者)索菲亚罗兰说美丽使你引起别人注意,睿智使你得到别人赏识,而魅力,却使你难以被人忘怀。曾以为,魅力是一个人知识地位和外貌的体现,尽情挥映众发布RTX4090冰龙黑金版,采用与ARCTIC合作的AIO散热解决方案映众(INNO3D)宣布,推出GeForceRTX4090iCHILLBLACK(RTX4090冰龙黑金版),采用一体式水冷散热解决方案。由于RTX4090功耗较大,不少采用风冷散纯视觉智能驾驶会成为电动汽车的光刻机嘛?算盘永远打不出互联网,电动车是智能汽车的基础,王传福在2018年的潘谈会上说,他极度看好智能汽车未来,断定智能汽车是下一个风口。那一年,国内造车新势力蜂拥而至。蔚来的ES8威马汽车腾讯红杉商汤,集体落子成姆斯特丹文丨刘燕秋来源丨投中网提到成都,人们的印象往往是宜居的网红城市,洋气的潮流之都,但那只是这座城市外显的一面。最近国产电热毯在欧洲火了,助推背后的成都彩虹电器市值翻了一倍,人们这才知红米K60Pro继续发挥性能优势,2K屏骁龙8Gen2,2亿主摄是亮点关注红米的用户都清楚,近几年定位全面升级,逐渐向小米靠拢,Note系列虽然定位千元机,但早就用上了120瓦有线快充。K系列机型也不甘示弱,在第一时间也用上了4纳米芯片,屏幕分辨率也双排座电动厢式房车来了,低速四轮房车登场,新能源老年代步房车大家好,我是老杳,一个理想主义者,喜欢寻找诗和远方。说起电动房车,目前市面上最多的就是电动三轮房车,但三轮房车在稳定性和舒适性上都远不及四轮房车,而电动四轮房车又以单排座为主,很多天猫双11菜鸟进口备货超3。7亿件,保税仓送货上门覆盖250城记者刚刚从菜鸟了解到,截至今天(10月21日),已有发运自全球200多个港口的3。7亿件进口商品在菜鸟保税仓中心仓和海外GFC仓进行备货,迎接3天后的天猫双11预售。通过沉淀的智慧如何通过编程思维解决数学问题头条创作挑战赛如何通过编程思维解决数学问题问题描述一个停车场,现有6辆车来了两辆车走了三辆车,总共是多少辆车?问题分析设置total是现有的车辆数量第一次来了两辆,第二次开走了三辆面试被问到线程池是怎样实现线程复用的,如何回答?如果你只知道线程池的几个参数,面试被问到再深一点的内容就回答不上来了,那么本系列文章带你熟悉线程池源码,更深入的了解线程池。ThreadPoolExecutor将分几篇文章做解析,