Loading

Cursor开发智能体demo初体验

在上一次使用Cursor开发springboot项目以后,尝到了甜头,随着智能体的不断给我带来的良好体验,对智能体进一步了解的兴趣也进一步增强。

所以这次用Cursor开发一个智能体Demo,主要借助千问与Cursor这两个工具,首先让千问生成一个示例,内容如下:

app.py

# app.py
import gradio as gr
from agent import ask_question

gr.ChatInterface(
    fn=ask_question,
    title="资产中心智能助理",
    description="问我任何关于资产接口的问题!"
).launch(server_name="0.0.0.0", server_port=7860)

 

  agent.py

# agent.py
import os
from langchain_community.document_loaders import TextLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_community.vectorstores import Chroma
from langchain_community.embeddings import HuggingFaceEmbeddings
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
from langchain_core.output_parsers import StrOutputParser
from langchain_openai import ChatOpenAI  # 通过 OpenAI 兼容接口调用通义千问

# 1. 加载并切分文档
loader = TextLoader("asset_api_docs.txt", encoding="utf-8")
docs = loader.load()
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
splits = text_splitter.split_documents(docs)

# 2. 创建向量数据库(首次运行会自动 embedding)
vectorstore = Chroma.from_documents(
    documents=splits,
    embedding=HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")
)
retriever = vectorstore.as_retriever()

# 3. 设置大模型(这里以通义千问 OpenAI 兼容接口为例)
# 建议把 API Key 配到环境变量 QWEN_API_KEY 中
llm = ChatOpenAI(
    model="qwen-plus",  # 或者你在阿里云控制台开通的具体模型名
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    api_key=os.getenv("QWEN_API_KEY") or "sk-11b89bf9e5014910af37d6d759dec74b",
)

# 4. 构建 RAG 链(Retrieval-Augmented Generation)
template = """
你是一个专业的资产中心接口顾问,请根据以下上下文回答问题。
如果不知道答案,请说“根据现有文档无法回答”,不要编造。

上下文:
{context}

问题:
{question}
"""
prompt = ChatPromptTemplate.from_template(template)

rag_chain = (
    {"context": retriever, "question": RunnablePassthrough()}
    | prompt
    | llm
    | StrOutputParser()
)

# 5. 提供调用函数
# Gradio ChatInterface 默认会把 (message, history) 作为两个参数传进来
def ask_question(message: str, history=None) -> str:
    # 我们这里只关心当前用户问题 message,忽略 history
    return rag_chain.invoke(message)

 

 

 然后需要一个供agent学习的知识集,这里用一个txt

【获取资产列表】
接口地址: GET /api/v1/assets
请求参数: page (int), size (int)
返回字段: id, name, type, status
错误码: 401-未授权, 404-资源不存在

【创建资产】
接口地址: POST /api/v1/assets
请求体: { "name": "string", "type": "server" }
...

主要的就是环境需要使用python3.11的,从官网下载即可,3.14的没试验成功,然后建立虚拟环境,整体结构如下图:

1770969997870_C90E2FFA-E045-461b-BCCF-F9F7F62BFD6D

 激活py311虚拟环境后,就是安装一些必要的包,期间运行python app.py的任何报错都可以让cursor的agent解决,然后就出现期盼已久的成功画面了:

1770970113831_C766DF5F-3302-42de-8E5A-6CC7BBDCCD33

 

 

  w

posted @ 2026-02-13 16:09  Jicing  阅读(86)  评论(0)    收藏  举报