Langchain+FastApi+Vue前后端Ai对话(超详细)

embedded/2025/1/24 4:02:42/

一、引入

首先可以先看下作者的文章

  • FastApi相关文章:创建最简单FastApi的项目
  • Vue相关文章:最简单的aixos二次封装
  • Langchain相关文章:如何使用LangSmith跟踪deepseek模型

二、后端搭建

1 项目文件结构

  • routers:存放api接口
  • service:存放实际操作函数
  • init.py: 挂载接口
  • main:运行程序

2 创建聊天接口

3 创建chatService

一定要配置代理和模型密钥

4 挂载接口

5 运行主函数

三、前端搭建

1 创建axios实例

2 创建请求

3 发送请求

4 界面布局

界面布局的源代码

<template><div class="chat-container"><div class="timeline-container"><el-timeline><el-timeline-itemv-for="(activity, index) in activities":key="index":icon="activity.icon":type="activity.type":color="activity.color":size="activity.size":hollow="activity.hollow":timestamp="activity.timestamp">{{ activity.content }}</el-timeline-item></el-timeline></div><div id="container" class="input-container"><div id="chat" class="chat-input"><el-inputv-model="msg"input-style="width: calc(100% - 80px); height: 60px; border-radius: 8px;":rows="2"type="text"placeholder="请输入消息"@keydown.enter="sendMsg();"/><el-button @click="sendMsg()" class="send-button">发送</el-button></div></div></div>    
</template>
<script setup>
import { MoreFilled } from '@element-plus/icons-vue'
import {ref, onMounted} from "vue";
import {getChat} from '@/api/chat'const activities = ref([{content: '请问有什么可以帮您的?',timestamp: new Date().toLocaleDateString() + " " + new Date().toLocaleTimeString(),color: '#0bbd87',},
]);const msg = ref('');const sendMsg = () => {activities.value.push({content: `你:${msg.value}`,timestamp: new Date().toLocaleDateString() + " " + new Date().toLocaleTimeString(),size: 'large',type: 'primary',icon: MoreFilled,},);activities.value.push({content: 'waiting...',timestamp: new Date().toLocaleDateString() + " " + new Date().toLocaleTimeString(),color: '#0bbd87',},);getChat(msg.value).then(res => {activities.value.pop();activities.value.push({content: res.data,timestamp: new Date().toLocaleDateString() + " " + new Date().toLocaleTimeString(),color: '#0bbd87',},);});msg.value = '';
};
</script>
<style scoped>.chat-container {background-color: #A8C9D4;padding: 10px;border-radius: 8px;width: 600px;height: 500px;display: flex;flex-direction: column;}.timeline-container {height: 600px;width: 100%;overflow-y: auto;border: 1px solid #1e7ba2;border-radius: 8px;padding: 10px;}.input-container {margin-top: 10px;}.chat-input {display: flex;align-items: center;}.send-button {margin-left: 10px;height: 60px;border-radius: 8px;}
</style>

5 配置代理

四、展示效果

五、源代码

源代码地址:天才奇男子/学习笔记


http://www.ppmy.cn/embedded/156464.html

相关文章

设计模式:责任链模式——行为型模式

目录 主要角色 优点 缺点 适用场景 示例代码 普通写法&#xff1a; 策略模式&#xff1a; 总结对比 责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;是一种行为设计模式&#xff0c;它允许多个对象有机会处理请求&#xff0c;从而避免请求发送者与…

在Windows/Linux/MacOS C++程序中打印崩溃调用栈和局部变量信息

打印崩溃调用栈和局部变量信息的方法有所不同。以下是针对 Windows、Linux 和 MacOS 的示例代码。 Windows 在 Windows 上&#xff0c;可以使用 Windows API 来捕获异常并打印调用栈。 #include <windows.h> #include <DbgHelp.h> #include <stdio.h> #in…

mac配置stable diffusion以及模型出图优化

1. 基础stable diffusion webui安装 使用的工程是stable-diffusion-webui&#xff0c;直接clone下来即可。 然后创建一个conda环境&#xff0c;python为3.9 激活conda环境后&#xff0c;执行./webui.sh即可。脚本会自动安装必要的包&#xff0c;然后启动网页。 默认有一个sd…

JAVA 使用反射比较对象属性的变化,记录修改日志。使用注解【策略模式】,来进行不同属性枚举值到中英文描述的切换,支持前端国际化。

1.首先定义一个接口&#xff0c;接口中有两个方法&#xff0c;分别是将属性转换成英文描述和中文描述。 其实就是将数据库中记录的 0 1 &#xff0c;转换成后面的描述 这边定义了中文转换为默认方法&#xff0c;是因为有些属性不需要进行中文转换&#xff0c;或者该属性的枚举…

PID 控制算法(二):C 语言实现与应用

在本文中&#xff0c;我们将用 C 语言实现一个简单的 PID 控制器&#xff0c;并通过一个示例来演示如何使用 PID 控制算法来调整系统的状态&#xff08;如温度、速度等&#xff09;。同时&#xff0c;我们也会解释每个控制参数如何影响系统的表现。 什么是 PID 控制器&#xf…

【JavaEE】Spring(1)

一、什么是Spring和SpringBoot Spring是Java应用程序的开发框架&#xff0c;其目的就是为了简化Java开发&#xff1b;SpringBoot是在spring框架的基础上构建的一个快速开发框架&#xff0c;其作用是进一步简化Spring程序开发 二、SpringBoot项目 2.1 创建项目 1. 设置jdk版本…

使用repo下载android源码,Ubuntu安装repo

由于网络原因&#xff0c;有时可能连接不到google&#xff0c;所以这里推荐直接使用镜像网站下载&#xff0c;并配置repo的更新源为镜像源 1 &#xff0c; 新建一个文件夹&#xff0c;从清华源下载下载git-repo到本地 git clone https://mirrors.tuna.tsinghua.edu.cn/git/git…

Flutter 使用 flutter_inappwebview 加载 App 本地 HTML 文件

在 Flutter 开发中&#xff0c;加载本地 HTML 文件是一个常见的需求&#xff0c;尤其是在需要展示离线内容或自定义页面时。flutter_inappwebview 是一个功能强大的插件&#xff0c;支持加载本地文件和网络资源。本文将详细介绍如何使用 flutter_inappwebview 加载 App 本地 HT…