当前位置: 首页 > news >正文

武冈网站建设哪家好免费wordpress主题

武冈网站建设哪家好,免费wordpress主题,宝塔wordpress腾讯云,商务网站内容维护范围本文介绍Embeddings的基本概念#xff0c;并使用最少但完整的代码讲解Embeddings是如何使用的#xff0c;帮你打造专属AI聊天机器人#xff08;智能客服#xff09;#xff0c;你可以拿到该代码进行修改以满足实际需求。 ChatGPT的Embeddings解决了什么问题#xff1f; …本文介绍Embeddings的基本概念并使用最少但完整的代码讲解Embeddings是如何使用的帮你打造专属AI聊天机器人智能客服你可以拿到该代码进行修改以满足实际需求。 ChatGPT的Embeddings解决了什么问题 如果直接问ChatGPTWhat is langchain? If you do not know please do not answer.由于ChatGPT不知道2021年9月份之后的事情而langchain比较新是在那之后才有的所以ChatGPT会回答不知道 I’m sorry, but I don’t have any information on “langchain.” It appears to be a term that is not widely recognized or used in general knowledge. 如果我们用上Embeddings用上面的问题提问它可以给出答案 LangChain is a framework for developing applications powered by language models. 有了这个技术我们就可以对自己的文档进行提问从而拓展ChatGPT的知识范围打造定制化的AI智能客服。例如在官网接入ChatGPT根据网站的文档让他回答用户的问题。 Embeddings相关基本概念介绍 什么是Embeddings? 在跳进代码之前先简要介绍一下什么是Embeddings。在介绍Embeddings之前我们需要先学习一下「向量」这个概念。 我们可以将一个事物从多个维度来描述例如声音可以从「时域」和「频域」来描述傅里叶变换可能很多人都听过维度拆分的越多就越能描述一个事物在向量空间上的接近往往意味着这两个事物有更多的联系而向量空间又是比较好计算的于是我们可以通过计算向量来判断事物的相似程度。 在自然语言处理 (NLP) 的中Embeddings是将单词或句子转换为数值向量的一种方法。这些向量捕获单词或句子的语义使我们能够对它们执行数学运算。例如我们可以计算两个向量之间的余弦相似度来衡量它们在语义上的相似程度。 Embeddings使用流程讲解 如何让ChatGPT回答没有训练过的内容流程如下一图胜千言。 分步解释 首先是获取本地数据的embeddings结果由于一次embeddings调用的token数量是有限制的先将数据进行分段然后以依次行调用获得所有数据的embeddings结果。然后我们开始提问同样的将提问的内容也做一次embedding得到一个结果。再将提问的intending结果和之前所有数据的embedded结果进行距离的计算这里的距离就是指向量之间的距离然后我们获取距离最近的几段段数据来作为我们提问的「上下文」例如这里找到data2/data3是和问题最相关的内容。获得上下文之后我们开始构造真正的问题问题会将上下文也附属在后面一并发送给chat gpt这样它就可以回答之前不知道的问题了。 总结来说 之所以能够让ChatGPT回答他不知道的内容其实是因为我们把相关的上下文传递给了他他从上下文中获取的答案。如何确定要发送哪些上下文给他就是通过计算向量距离得到的。 embedding实战代码python 让我来看看实际的代码。 前置条件 Python 3.6 或更高版本。OpenAI API 密钥或者其他提供API服务的也可以。安装了以下 Python 软件包 requests 、 beautifulsoup4 、 pandas 、 tiktoken 、 openai 、 numpy 。私有文本数据集。在这个示例中使用名为 langchainintro.txt 的文本文件这里面是langchain官网的一些文档说明文档比较新所以ChatGPT肯定不知道以此来测试效果。 代码 代码来自于OpenAI官网我做了一些改动和精简。 import os import numpy as np import openai import pandas as pd import tiktoken from ast import literal_eval from openai.embeddings_utils import distances_from_embeddings import tracebacktokenizer tiktoken.get_encoding(cl100k_base)def get_api_key():return os.getenv(OPENAI_API_KEY)def set_openai_config():openai.api_key get_api_key()openai.api_base https://openai.api2d.net/v1def remove_newlines(serie):serie serie.str.replace(\n, )serie serie.str.replace(\\n, )serie serie.str.replace( , )serie serie.str.replace( , )return seriedef load_text_files(file_name):with open(file_name, r, encodingUTF-8) as f:text f.read()return textdef prepare_directory(dir_nameprocessed):if not os.path.exists(dir_name):os.mkdir(dir_name)def split_into_many(text, max_tokens):# Split the text into sentencessentences text.split(. )# Get the number of tokens for each sentencen_tokens [len(tokenizer.encode( sentence)) for sentence in sentences]chunks []tokens_so_far 0chunk []# Loop through the sentences and tokens joined together in a tuplefor sentence, token in zip(sentences, n_tokens):# If the number of tokens so far plus the number of tokens in the current sentence is greater# than the max number of tokens, then add the chunk to the list of chunks and reset# the chunk and tokens so farif tokens_so_far token max_tokens:chunks.append(. .join(chunk) .)chunk []tokens_so_far 0# If the number of tokens in the current sentence is greater than the max number of# tokens, split the sentence into smaller parts and add them to the chunkwhile token max_tokens:part sentence[:max_tokens]chunk.append(part)sentence sentence[max_tokens:]token len(tokenizer.encode( sentence))# Otherwise, add the sentence to the chunk and add the number of tokens to the totalchunk.append(sentence)tokens_so_far token 1# Add the last chunk to the list of chunksif chunk:chunks.append(. .join(chunk) .)return chunksdef shorten_texts(df, max_tokens):shortened []# Loop through the dataframefor row in df.iterrows():# If the text is None, go to the next rowif row[1][text] is None:continue# If the number of tokens is greater than the max number of tokens, split the text into chunksif row[1][n_tokens] max_tokens:shortened split_into_many(row[1][text], max_tokens)# Otherwise, add the text to the list of shortened textselse:shortened.append(row[1][text])df pd.DataFrame(shortened, columns[text])df[n_tokens] df.text.apply(lambda x: len(tokenizer.encode(x)))return dfdef create_embeddings(df):df[embeddings] df.text.apply(lambda x: openai.Embedding.create(inputx, enginetext-embedding-ada-002)[data][0][embedding])df.to_csv(processed/embeddings.csv)return dfdef load_embeddings():df pd.read_csv(processed/embeddings.csv, index_col0)df[embeddings] df[embeddings].apply(literal_eval).apply(np.array)return dfdef create_context(question, df, max_len1800, sizeada ):Create a context for a question by finding the most similar context from the dataframe# print(fstart create_context)# Get the embeddings for the questionq_embeddings openai.Embedding.create(inputquestion, enginetext-embedding-ada-002)[data][0][embedding]# print(fq_embeddings:{q_embeddings})# Get the distances from the embeddingsdf[distances] distances_from_embeddings(q_embeddings, df[embeddings].values, distance_metriccosine)# print(fdf[distances]:{df[distances]})returns []cur_len 0# Sort by distance and add the text to the context until the context is too longfor i, row in df.sort_values(distances, ascendingTrue).iterrows():# print(fi:{i}, row:{row})# Add the length of the text to the current lengthcur_len row[n_tokens] 4# If the context is too long, breakif cur_len max_len:break# Else add it to the text that is being returnedreturns.append(row[text])# Return the contextreturn \n\n###\n\n.join(returns)def answer_question(df,modeltext-davinci-003,questionAm I allowed to publish model outputs to Twitter, without a human review?,max_len1800,sizeada,debugFalse,max_tokens150,stop_sequenceNone ):Answer a question based on the most similar context from the dataframe textscontext create_context(question,df,max_lenmax_len,sizesize,)# If debug, print the raw model responseif debug:print(Context:\n context)print(\n\n)prompt fAnswer the question based on the context below, \n\nContext: {context}\n\n---\n\nQuestion: {question}\nAnswer:messages [{role: user,content: prompt}]try:# Create a completions using the questin and contextresponse openai.ChatCompletion.create(messagesmessages,temperature0,max_tokensmax_tokens,stopstop_sequence,modelmodel,)return response[choices][0][message][content]except Exception as e:# print stacktraceback.print_exc()print(e)return def main():# 设置API keyset_openai_config()# 载入本地数据texts []text load_text_files(langchainintro.txt)texts.append((langchainintro, text))prepare_directory(processed)# 创建一个dataframe包含fname和text两列df pd.DataFrame(texts, columns[fname, text])df[text] df.fname . remove_newlines(df.text)df.to_csv(processed/scraped.csv)# 计算token数量df.columns [title, text]df[n_tokens] df.text.apply(lambda x: len(tokenizer.encode(x)))# print(f{df})df shorten_texts(df, 500)# 如果processed/embeddings.csv已经存在直接load不存在则createif os.path.exists(processed/embeddings.csv):df load_embeddings()else:df create_embeddings(df)print(fWhat is langchain? If you do not know please do not answer.)ans answer_question(df, modelgpt-3.5-turbo, questionWhat is langchain? If you do not know please do not answer., debugFalse)print(fans:{ans})if __name__ __main__:main() 代码流程与时序图的流程基本一致注意api_key需要放入环境变量也可以自己改动。 如果直接问ChatGPTWhat is langchain? If you do not know please do not answer.ChatGPT会回答不知道 I’m sorry, but I don’t have any information on “langchain.” It appears to be a term that is not widely recognized or used in general knowledge. 运行上面的代码它可以给出答案 LangChain is a framework for developing applications powered by language models. 可以看到它使用了我们提供的文档来回答。 拓展 注意token消耗如果你的本地数据非常多embedding阶段将会消耗非常多的token请注意使用。embedding阶段仍然会将本地数据传给ChatGPT如果你有隐私需求需要注意。一般生产环境会将向量结果存入「向量数据库」而不是本地文件此处为了演示直接使用的文本文件存放。
http://www.hkea.cn/news/14451542/

相关文章:

  • 单页的网站怎么做的重庆网站建设yunhuit
  • 四川建设企业网站安居客房产网
  • 大力推进网站集约化建设学做网站快吗
  • 网站访问流程深圳比较好的设计工作室
  • 做中介平台网站 需要什么影视公司排名
  • 网站图怎么做会高清图片常见的微网站平台有哪些
  • 做一个页面网站需要多少钱wordpress 全屏滑块主题
  • 网站建设教案html留言簿网站基本框架搭建
  • 企业型网站网址卖网站模板
  • 我的世界做壁纸网站打不开宁波企业网站开发公司
  • 营销型网站建设报价方案天美影像传媒有限公司招聘
  • 数据网站有哪些芜湖龙湖建设工程有限公司网站
  • 沂seo网站推广做爰全过程的视频的网站
  • 网站首页作用宁德网
  • 作品集模板网站wordpress模板增加文章
  • 多语网站wordpress子站点高端公司小程序建设
  • 微网站模板在线网站缓存实例
  • 购物网站开发实战购物网站建设网站
  • 贵州做网站公司淄博桓台网站建设方案
  • 中山网站建设文化效果网站安全备案
  • 网站建设使用情况成都搭建企业网站
  • 上海网站开发设计公司咨询网站源码
  • 分类信息网站平台有哪些品牌网站怎么建设
  • 中国网站建设公司四个常见的网络营销方式
  • 长丰县住房和城乡建设局网站目标网站上做关键字布局
  • 视频解析接口网站怎么做cms免费开源
  • 佛山市外贸网站建设价格锡盟做网站
  • 网站的美观性北京市工程信息网官网
  • 门户网站搭建方案wordpress主题 机械
  • 深圳网站建设培训中国购物网站排行榜