streamlit+langchain打造AI聊天

1.编程环境

  • 编程语言:python 3.12

  • IDEA:PyCharm 2023.2.3

  • 项目管理工具:Anaconda Navigator 2.6

  • 操作系统:window 10

2.框架介绍

2.1.streamlit简单介绍

只用 Python 也能做出很漂亮的网站?Streamlit 说可以。

在这里插入图片描述
Streamlit 官方介绍:能在几分钟内把 Python 脚本变成可分享的网站。只需使用纯 Python ,无需前端经验。甚至,你只需要懂 markdown ,然后按照一定规则去做也能搞个网页出来。它还支持免费部署,感动到落泪。

官方网站:https://streamlit.io/

2.2.langchain简单介绍

用于将外部数据和LLM大语言模型相结合,让LLM能够基于外部数据知识的基础上进行智能问答,这就是LangChain开源框架搭建的基于AI大模型下的AI应用开发新范式。

LangChain定义了一套基于大模型之上的应用开发框架,倡议各大模型能够按照框架定义进行相关实现,其也在不断完善其在大模型上的支持的能力,它的更新迭代很快,新的内容在不断出现。

下图描述了LangChain的业务架构,内部核心业务包括六个部分:Prompts、Models、Chains、Memory、Retriever、Agent

在这里插入图片描述

官网地址:https://www.langchain.com/

3.通义大模型

由上面第2.2章所描述我们这里LLM大模型使用的是阿里通义系列。

3.1.阿里云百炼生成应用得到API KEY

申请地址:https://bailian.console.aliyun.com/#/app-center

使用通义系列中最强大的千问-max,特别注意创建应用需要登录阿里云并充值1块钱,调用接口是需要费用😅。

在这里插入图片描述

4.下载相关包

首先你的电脑需要有 python 环境。打开项目管理工具Anaconda下载以下开发包

  • 安装streamlit

使用下面这条命令就可以安装 streamlit

pip install streamlit -i https://pypi.tuna.tsinghua.edu.cn/simple

安装 streamlit 成功后可以使用下面这条命令看看能不能运行起来。

streamlit hello
  • 安装langchain
pip install langchain -i https://pypi.tuna.tsinghua.edu.cn/simple 
pip install langchain_community -i https://pypi.tuna.tsinghua.edu.cn/simple 

5.创建python项目

5.1通过pyCharm创建项目

在这里插入图片描述

5.2utils工具包代码

# 1. 导入相关包
from langchain_community.llms import Tongyi
from langchain.chains import ConversationChain
from langchain.prompts import ChatPromptTemplate,MessagesPlaceholder
from langchain.memory import ConversationBufferMemory

# 2. 定义一个函数,用于发起请求,返回结果
def get_response(prompt, memory, api_key):
    # 3. 创建模型对象
    llm = Tongyi(
        model = 'qwen-max',
        dashscope_api_key = api_key
    )
    # 4. 创建chains链
    # prompt = ChatPromptTemplate.from_messages([
    #     ("system", "你是一个乐于助人的AI小助手,请帮助用户回答问题"),
    #     MessagesPlaceholder(variable_name="history"),
    #     ("human", "{input}")
    # ])
    chains = ConversationChain(llm=llm, memory=memory)
    # 5. 发起请求,返回结果
    response = chains.invoke({"input": prompt})
    # 6. response记忆体,很多之前会话,本次会员包含在一个response的key中
    return response['response']

# 7. 测试,测试结束后,终止
if __name__ == '__main__':
    prompt = "世界上最高的山峰是哪一座?"
    memory = ConversationBufferMemory(return_messages=True)
    api_key = '请输入你申请的通义灵码API KEY'

    result = get_response(prompt, memory, api_key)
    print(result)

5.3main包代码

# 1. 导入相关包,如streamlit包
import streamlit as st
from langchain.memory import ConversationBufferMemory
from utils import get_response

# 2. 设置左侧边栏
with st.sidebar:
    # 显示文本
    api_key = st.text_input("请输入Tongyi账号的API KEY:", type="password")
    st.markdown("[获取Tongyi账号的API KEY](https://bailian.console.aliyun.com/?apiKey=1#/api-key)")

# 3. 主界面主标题
st.title("通义聊天机器人")

# 5. 会话保持:用于存储会话记录
if "memory" not in st.session_state:
    st.session_state['memory'] = ConversationBufferMemory()
    st.session_state['messages'] = [{'role':'ai', 'content':'你好,我是通义聊天机器人,有什么可以帮助你的么?'}]

# 6. 编写一个循环结构,用于打印会话记录
for message in st.session_state['messages']:
    with st.chat_message(message['role']):
        st.markdown(message['content'])

# 4. 创建一个聊天窗口
prompt = st.chat_input("请输入您要咨询的问题:")
# 7. 如果文本框有数据,继续向下执行
if prompt:
    # 8. 如果没有api_key,则提示用户输入api_key
    if not api_key:
        st.warning("请输入Tongyi的API KEY")
        st.stop()
    # 9. 代表不仅有prompt还有api_key,继续往下,把用户信息显示在主窗体
    st.session_state['messages'].append({'role':'human', 'content':prompt})
    st.chat_message("human").markdown(prompt)
    # 10. 向utils工具箱发起请求,返回响应
    with st.spinner("AI小助手正在思考中..."):
        content = get_response(prompt, st.session_state['memory'], api_key)
    st.session_state['messages'].append({'role':'ai', 'content':content})
    st.chat_message("ai").markdown(content)

在cmd中输入 streamlit run main.py 即可展示网页

在这里插入图片描述

在这里插入图片描述

<think>好的,我需要帮助用户了解如何在Java中集成和使用LangChain。根据用户提供的引用内容,特别是引用[3]和[4],我需要整理出一个清晰的步骤指南。首先,要确认用户的需求是集成LangChain到Java项目中,因此需要说明所需的依赖项、配置步骤以及示例代码。 首先,根据引用[4],用户需要添加Maven依赖,所以第一步应该是指导如何添加LangChain4j的核心依赖到pom.xml文件中。这里需要确保版本号正确,比如提到的0.1.12版本。接下来,可能需要扩展模块,比如langchain-ollama或langchain-openai,具体取决于用户想使用的模型供应商。 然后,引用[3]提到了初始化OpenAiChatModel并创建助手类Assistant的示例代码。因此,第二步应该是展示如何配置API密钥,并创建聊天模型的实例。同时,需要提醒用户替换API密钥,并注意异常处理,比如try-catch块。 接下来,用户可能需要一个完整的代码示例来演示如何使用这些类进行聊天。这里需要确保代码结构清晰,包括依赖导入、主类定义、模型初始化和方法调用。此外,还要说明可能的输出结果,比如日志记录的答案。 在注意事项部分,需要提到版本兼容性、网络连接要求以及不同供应商模型的配置差异,如引用[4]提到的扩展模块。最后,相关问题部分需要生成与Java集成相关的问题,比如性能优化、模型切换、与Python版的区别以及错误处理等。 需要确保所有技术术语正确,代码格式无误,并且引用标识正确对应到提供的参考资料。同时,保持回答的中文,使用自然的口语化表达,避免使用Markdown格式,符合用户要求的可见层结构。</think>### 如何在Java中集成LangChain? #### 1. **添加Maven依赖** 首先在`pom.xml`中添加LangChain4j核心库依赖: ```xml <dependency> <groupId>io.github.hamawhitegg</groupId> <artifactId>langchain-core</artifactId> <version>0.1.12</version> </dependency> ``` 若需扩展功能(如对接OpenAI),添加对应模块[^4]: ```xml <dependency> <groupId>io.github.hamawhitegg</groupId> <artifactId>langchain-openai</artifactId> <version>0.1.12</version> </dependency> ``` #### 2. **配置模型参数** 初始化语言模型并设置API密钥: ```java import io.github.hamawhitegg.langchain.core.llm.OpenAiChatModel; public class LangChainDemo { public static void main(String[] args) { OpenAiChatModel model = OpenAiChatModel.builder() .apiKey("sk-your-key-here") .temperature(0.7) .build(); } } ``` #### 3. **创建助手类** 封装模型调用逻辑: ```java class Assistant { private final OpenAiChatModel model; public Assistant(OpenAiChatModel model) { this.model = model; } public String chat(String prompt) { return model.generate(prompt); } } // 调用示例 Assistant assistant = new Assistant(model); String answer = assistant.chat("What is LangChain4j?"); System.out.println("Answer: " + answer); // [^3] ``` #### 4. **运行与输出** 输出结果可能为: ``` Answer: LangChain4j是Java生态中集成大语言模型(LLM)的框架,支持对话、检索增强生成(RAG)等场景... ``` #### 注意事项 - 确保Java版本≥11,Maven≥3.5.4[^4] - 需要稳定的网络连接访问外部API - 不同供应商模型需配置对应模块(如Ollama、HuggingFace)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值