山东大学软件学院项目实训第一周个人周报

Python3.8

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

这周的工作主要是技术栈的选型,框架的搭建以及springboot调用deepseek的快速上手。

经过小组成员协商后端暂定用springboot完成主要业务,而大模型调用相关的功能仍然使用python语言完成,因此需要用flask把python脚本暴露给springboot去调用。

1.编写调用deepseek api的python脚本,并将其注册到flask中

import os
from openai import OpenAI
from flask import Flask

# 从环境变量中读取 API 密钥
key = os.getenv("API_KEY")

# 检查是否成功获取 API 密钥
if key is None:
    raise ValueError("API key is not set in environment variables!")

client = OpenAI(base_url="http://10.2.8.77:3000/v1", api_key=key)

app = Flask(__name__)

@app.route('/')
def index():
    response = client.chat.completions.create(
        model="DeepSeek-R1",
        messages=[
            {"role": "system", "content": "You are a helpful assistant"},
            {"role": "user", "content": "Hello"},
        ],
        stream=False
    )
    return response.choices[0].message.content

上面这段代码从环境变量中获取api key,再启动flask之前记得设置环境变量。在windows powershell中的命令是$env:API_KEY="********"
app = Flask(name)这行代码是初始化一个flask对象,并将其赋值给app这个变量。
最后我们写了一个函数,这个函数去调用了deepseek api,并返回deepseek响应的内容。并且在函数上方添加上@app.route('/'),它的作用是使得你访问'/',也就是根目录时,就会调用这个index函数,并将这个函数的返回值传给你调用的client。
app是我们定义的flask对象,route是flask对象的一个函数,这个函数是一个装饰器,所谓装饰器就是接收一个函数作为其参数的函数。最后再前面加上@,表明这个函数作为一个装饰器调用,这样我们下面写的这个index函数就会作为参数被传给app变量的route方法,这个方法内部会将传入的函数注册为事件处理程序,这样就实现了当你访问对应路径的时候自动调用对应的函数。

2.使用openFeign来调用flask应用

openFeign是springcloud的一个远程调用组件,我们使用这个组件来帮我们访问flask应用接口
在springboot项目中,我创建了名为feign的包,这个包用来统一存放所有feign接口文件。然后我创建了一个名为flaskApiClient的接口文件,它的代码如下:

@FeignClient(name = "flask-api", url = "http://localhost:5000")
public interface FlaskApiClient {

    @GetMapping("/")
    String hello();
}

第一行的@FeignClient注解指明这个client将会去访问http://localhost:5000
hello方法被@GetMapping("/")注解修饰,组合起来就是当你调用这个接口的hello方法时,openFeign组件就会去访问"http://localhost:5000/" 这个地址。而flask默认是运行在本机的5000端口上的,再加上我们上面把index方法注册到根目录'/'下了,于是这就是一个调用我们刚刚写的python脚本的方法。

3.大功告成,来测试一下

我们首先启动一下flask(再次注意启动之前先设置一下api key的环境变量),在我们使用flask run这个命令启动flask之前,我们还需要将FLASK_APP这个环境变量设置为当前要运行的py文件,在windows powershell中的命令为$env:FLASK_APP="chat.py"。设置好之后我们就可以用flask run命令启动flask了!

(.venv) PS F:\LawyerHelper\deepseek> flask run                                                         
 * Serving Flask app 'chat.py'
 * Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on http://127.0.0.1:5000
Press CTRL+C to quit

这个warning是提示我们flask集成的这个服务器仅适用于开发,不适用于生产。我们后面部署上线的时候将会使用其他服务器。

这样flask应用就启动好了,可以看到它正在监听本机的5000端口。
然后我们编写一个testController(注意controller统一放到controller包下)来测试。

@RestController
@RequestMapping("/test")
public class TestController {

    @Autowired
    FlaskApiClient flaskApiClient;

    @GetMapping("/hello")
    public String hello() {
        // return "Hello World";
        return flaskApiClient.hello();
    }
}

有了这个controller之后,我们就可以运行springboot应用,然后访问http://localhost:8080/test/hello
一切顺利的话,我们能从浏览器中看到deepseek发来的回答!

4. 最后在gitee项目的wiki上编写开发文档,帮助小组开发成员理解开发步骤,在需要的时候扩展新的调用。

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值