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

Langchain、RAG、Agent相关

ChatBot-销售型机器人

优化点:把相似度低于10条的请求Query打印出来。

RAG

类型:RAG、Latent RAG(产生一个回答,再用回答进行召回)、Logit RAG、Speculative RAG

个人感觉RAG召回可以分成3种:一种是query相关、另一回事回答这个query所需要的内容、根据query类型较好的回答示例。

文档转成内存db。

同时做Embedding+SQL查询的结果当做 context。  sql识别多个字段的关系的关键。text2sql:

Langchain有没有什么问题 有啥缺陷。

Conversation window buffer memory。直接存储原始的历史聊天记录最近k个。

conversation summary memory ,对聊天及时进行总结

Langchain

主要技术点:Langchain、LLamaindex、AutoGen

  • LangChain 是python版本、LangChain4j 是java版本。
  • SpringAI适用于,我有个Spring项目,我要接入AI服务;LangChain4j适用于我要构建一个复杂的LLM驱动的智能系统。
  • chatBot:把用户历史对话进行改写(当完成一次调节后悔重置历史对话起点),成一个需求走一套处理流程。
  • Retrievers 可以按照MMR、cos进行召回。
  • Memory的本质就是相当于History。
  • Chain和Agent区别:chain是workflow,agent是根据任务自行决定。
  • 调取官方的tool,也可以自定义function为tool。

LangChain多轮对话-点餐机器人[实战7]

from langchain_openai import ChatOpenAI
from langchain.chains import LLMChain
import logging
from langchain_core.prompts import ChatPromptTemplate, HumanMessagePromptTemplate, SystemMessagePromptTemplate
from langchain_core.language_models import LLM
from openai import OpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import ConversationChain
from langchain.memory import ConversationBufferMemory
import gradio as grclass Kimi(LLM):# llm 属性可不定义@propertydef _llm_type(self) -> str:"""Return type of LLM."""return "kimillm"# 必须定义_call方法def _call(self, prompt: str, **kwargs: any) -> str:try:client = OpenAI(# 此处请替换自己的apiapi_key="sk-IfM9SFhekY2FJhNkQu9ieDyzrVIulWEHl0p481QAFTaBQLVSB",base_url="https://api.moonshot.cn/v1",)completion = client.chat.completions.create(model="moonshot-v1-8k",messages=[# 系统消息,定义了Kimi的角色和行为准则。{"role": "system","content": "你是 Kimi,你现在是一名肯德基的服务生。",},{"role": "user", "content": prompt},],temperature=0.5,stream=False,)return completion.choices[0].message.contentexcept Exception as e:logging.error(f"Error in Kimi _call: {e}", exc_info=True)raisedef init_chatbot():llm = Kimi()global CHATGLM_CHATBOTCHATGLM_CHATBOT = ConversationChain(llm=llm,verbose=True,memory=ConversationBufferMemory()) #ConversationChain 记录这个用户消息,作为历史。并在下一轮调用 .predict(input=message) 的时候,把上下文拼接成一个完整的 prompt,再传给你自定义的 LLM 的 _call() 方法。return CHATGLM_CHATBOTdef chatglm_chat(message, history):ai_message = CHATGLM_CHATBOT.predict(input=message)return ai_messagedef launch_gradio():demo = gr.ChatInterface(fn=chatglm_chat,title="ChatBot周四点单服务员",chatbot=gr.Chatbot(height=600),)demo.launch(share=True, server_name="127.0.0.1")
if __name__ == "__main__":# 初始化聊天机器人init_chatbot()# 启动 Gradio 服务launch_gradio()

http://www.xdnf.cn/news/366049.html

相关文章:

  • 【MyBatis-6】MyBatis动态SQL:灵活构建高效数据库查询的艺术
  • AI融合SEO关键词智能优化
  • 三轴云台之视觉跟踪系统篇
  • 算法设计与分析复习代码(hnust)
  • 聊一部很癫的电影
  • 数据结构与算法分析实验10 实现最短路径算法
  • Linux——多线程
  • 前端常见七种报错类型及解决方案
  • Linux vi/vim编辑器常用命令
  • 多分类问题softmax传递函数+交叉熵损失
  • 嵌入式学习笔记 - 关于结构体成员地址对齐问题
  • Edu教育邮箱申请成功下号
  • Knife4j文档的会被全局异常处理器拦截的问题解决
  • Python MNE-Python 脑功能磁共振数据分析
  • IO-Link系列集线器(三格电子)
  • MySQL 安全架构:从渗透测试到合规审计
  • 对称加密以及非对称加密
  • 从零理解 RAG:检索增强生成的原理与优势
  • Linux系统Shell脚本之sed
  • 深度学习-161-Dify工具之对比使用工作流和聊天流生成图表可视化的html文件
  • css样式实现-新闻列表
  • MySQL相关查询
  • 在 MyBatis 中实现控制台输出 SQL 参数
  • htmlUnit和Selenium的区别以及使用BrowserMobProxy捕获网络请求
  • RoPE长度外推:外插内插
  • ResNet详解
  • 企业名录搜索软件靠谱吗 企业名录搜索软件怎么使用
  • LSTM的简单模型
  • git做commit信息时的校验
  • C++ —— 可变参数