openAi接口文档:https://platform.openai.com/
LangChain:https://js.langchain.com/docs/ https://github.com/hwchase17/langchainjs
LangChain 中文入门教程
import openai
def generate_prompt(prompt):
#You can DIY by these function
return prompt
def openai_reply(content, apikey):
openai.api_key = apikey
response = openai.ChatCompletion.create(
# You can change gpt-3.5-turbo-0301 into other model like gpt-4
model="gpt-3.5-turbo-0301", # gpt-3.5-turbo-0301
messages=[
# {"role": "system", "content": ""}, you can DIY by the content
{"role": "user", "content": generate_prompt(content)}
],
#The temperature and top_p is more low,the random is more low
#If you should keep your answer accuracy,such as you need translate,
# you can set temperature=0.2 and top_p=0.2
temperature=0.5,
max_tokens=1000,
top_p=0.5,
frequency_penalty=0,
presence_penalty=0,
)
# print(response)
return response.choices[0].message.content
#Run the code,to test,to show these
# Just change the prompt by prompts.csv
#Such as these code,you can change pwd to ls,and you can change the code using while True and input to interactive with the AI
prompt="I want you to act as a linux terminal. I will type commands and you will reply with what the terminal should show. I want you to only reply with the terminal output inside one unique code block, and nothing else. do not write explanations. do not type commands unless I instruct you to do so. when i need to tell you something in english, i will do so by putting text inside curly brackets {like this}. my first command is pwd"
#Get the api key from https://beta.openai.com/account/api-keys,it's free,just sign up
response=openai_reply(prompt,"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")
print(response)
my openai-key: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
本机部署langchain-chatGLM本地知识库
开源项目:https://github.com/imClumsyPanda/langchain-ChatGLM
Torch版本地址:https://download.pytorch.org/whl/torch_stable.html
lang-chain:
中文文档:https://github.com/liaokongVFX/LangChain-Chinese-Getting-Started-Guide
lang-chain是什么?https://www.bilibili.com/video/BV1GL411e7K4/?spm_id_from=333.337.search-card.all.click&vd_source=4c263677a216945c0d21ca65ee15a5f9
可以理解成一种标准或者说是一层协议,这个协议定义了构建一个大语言模型可能用到哪些东西,然后对这些东西做了一个标准化的定义。
lang-chain要做的一个事情就是我把你在AI开发中用到的相关的技术全部抽象成一个小的元素。只需要把这些元素像积木一样拼接起来就能够构建一个大型的AI应用。
因此,lang-chain其实是为了提升AI开发效率形成的一种约定俗成的架构。
lang-chain里有各种module,以后都会做出标准化的。
所以,lang-chain能够帮你更好的梳理AI大模型里面每个模块所做的事情和承担的角色。
lang-chain能帮你做什么?
- prompts
- chain,链式操作
例如让chatGpt帮我算一下1+1等于多少,这个不是GPT擅长的,它不擅长做数学计算,他擅长的是理解自然语言,比如你问他能不能帮他算1+1等于多少,他会拆成两步,第一步,将人的语言转成Python代码,然后将Python代码运行一下得出2。这就是chain。让自然语言模型完成自然语言擅长的事情。 - Data Augmented Generation – API call, call这个API
数据增强生成涉及特定类型的链,这些链首先与外部数据源交互以获取数据,以便在生成步骤中使用。示例包括长文本摘要和针对特定数据源的问题/回答。 - Agents 参考链接:https://www.bilibili.com/video/BV1DM4y1b7Hx/?spm_id_from=333.999.0.0&vd_source=4c263677a216945c0d21ca65ee15a5f9
Agents可以看成是一个更高维度的一个统筹,负责对任务进行分发和管理,比如搜索、记录、读取,需要有一个节点Agent来做这个事情。 - Memory
可以理解成长期记忆,即已经在模型内部的已知信息(数据是模型的一部分)。而prompts可以理解成短期记忆,即通过prompts输入来预测下一个词来生成的信息。 - Evaluation 评价、评估
最最终的模型进行一个判断,进行一个标记。
lang-chain最核心的一个价值是标准化
。
Large language models (LLMs) are emerging as a transformative technology, enabling developers to build applications that they previously could not. However, using these LLMs in isolation is often insufficient for creating a truly powerful app - the real power comes when you can combine them with other sources of computation or knowledge.
This library aims to assist in the development of those types of applications. Common examples of these applications include:
大型语言模型(LLMs)正逐渐成为一种变革性技术,使开发人员能够构建他们以前无法构建的应用程序。然而,单独使用这些LLMs通常不足以创建一个真正强大的应用程序 - 真正的力量来自于您能够将它们与其他计算或知识来源相结合。
这个库旨在协助开发这类应用程序。这类应用程序的常见示例包括:
- 机器翻译:将文本从一种语言翻译成另一种语言。结合LLMs和现有的翻译引擎可以提高翻译质量和准确性。
- 智能问答系统:结合LLMs和知识图谱,可以提供更准确、更深入的答案。
- 语音识别和合成:将LLMs与语音识别和合成技术相结合,为用户提供更自然、更流畅的语音交互体验。
- 文本摘要和生成:利用LLMs从大量文本中提取关键信息,并生成简洁、准确的摘要。
- 智能推荐系统:结合LLMs和用户行为数据,为用户提供更精准、更个性化的推荐内容。
通过将大型语言模型与其他计算或知识来源相结合,开发人员可以构建出更强大、更智能的应用程序,为用户带来前所未有的体验。
Code Interpreter(解释、翻译),目前能做的事情
- 数据分析/整理
- 可视化
- 图片/视频处理
- …
embeddings 嵌入、植入,大模型需要把自然语言转换成向量(目的方便计算距离等各种运算)来表示,因此通过向量来做搜索和分类进而理解你的意思,比如你叫什么名字和你的名字叫什么,在向量上是非常接近的,因此能够被理解成同一个意思。
本地知识库问答原理链接
分为三部分:
- 将本地知识库转换成向量存入数据库:通过对本地知识库进行信息提取,语义分割,转换成向量,存入知识库。
- 用户进行问答:将问题转换成向量,然后拿着这个向量去知识库的向量中匹配最相近(看与哪个向量最接近)的回答(到这步可以理解为传统的搜索引擎做的事情)。到这里还没有涉及到大语言模型,也能找到部分答案,但是可能非常不准确。
- 将从知识库搜索出来的内容和我的问题作为prompts,告诉大语言模型,通过大语言模型的润色得到最佳的答案。
总结:我们并没有将本地知识库放到大型语言模型里,而是将本地知识库搜索出来的答案与我的问题作为prompts给到大语言模型,这样的一个好处是大语言模型并不需要掌握那么多事实,他的能力是帮我进行语言的整理和处理。