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

LLM应用开发(三)

1.项目结构&代码运行流程图

项目结构:

|---app  // 应用入口集合
|	├---__init__.py
|   └---http
|---config  // 应用配置文件
|	├---__init__.py
|	├---config.py
|	└---default_config.py
|---internal  // 应用所有内部文件夹
|   ├---core  // LLM核心文件,集成LangChain、LLM、Embedding等非逻辑的代码
|	|	|---agent
|	|	|---chain
|	|	|---prompt
|	|	|---model_runtime
|	|	|---moderation
|	|	|---tool
|	|	|---vector_store
|	|	└---...
|   ├---exception  // 通用公共异常目录
|	|	├---__init__.py
|	|	├---exception.py
|	|	└---...
|   ├---extension  // Flask扩展文件目录
|	|	├---__init__.py
|	|	├---database_extension.py
|	|	└---...
|   ├---handler  // 路由处理器、控制器目录
|	|	├---__init__.py
|	|	├---account_handler.py
|	|	└---...
|   ├---middleware  // 应用中间件目录,包含校验是否登录
|	|	├---__init__.py
|	|	└---middleware.py
|	|	└---...
|   ├---migration  // 数据库迁移文件目录,自动生成
|	|	├---versions
|	|	└---...
|   ├---model  // 数据库模型文件目录
|	|	├---__init__.py
|	|	├---account.py
|	|	└---...
|   ├---router  // 应用路由文件夹,https://baidu.com/abc?q=123&name=泽辉
|	|	├---__init__.py
|	|	├---router.py
|	|	└---...
|   ├---schedule  // 调度任务、定时任务文件夹
|	|	├---__init__.py
|	|	└---...
|   ├---schema  // 请求和响应的结构体
|	|	├---__init__.py
|	|	└---...
|   ├---server  // 构建的应用,与app文件夹对应
|	|	├---__init__.py
|	|	└---...
|   ├---service // 服务层文件夹
|	|	├---__init__.py
|	|	├---oauth_service.py
|	|	└---...
|   ├---task  // 任务文件夹,支持即时任务+延迟任务
|	|	├---__init__.py
|	|	└---...
|---pkg  // 扩展包文件夹
|	├---__init__.py
|	|---oauth
|	|	├---__init__.py
|	|	├---github_oauth.py
|	|	└---...
|	└---...
├---storage  // 本地存储文件夹
├---test  // 测试目录
├---venv  // 虚拟环境
├---.env  // 应用配置文件
├---.gitignore  // 配置git忽略文件
├---requirements.txt  // 第三方包依赖管理
└---README.md  // 项目说明文件

代码运行流程图:

2.创建第一个项目

env目录内容太多,设置成忽略

3.依赖注入案例

injector框架:

新建测试文件test.py,安装环境

test.py内容:

from injector import Injector, inject


class A:
    name: str = "llmpos"


@inject
class B:
    def __init__(self, a: A):
        self.a = a

    def print(self):
        print(f"Class A 的name:{self.a.name}")


injector = Injector()
b = injector.get(B)
b.print()

执行结果:

4.写一个接口案例

安装flask:

相关文章:

  • 用php tp6对接钉钉审批流的 table 表格 明细控件 旧版sdk
  • BUU35 [DASCTF X GFCTF 2024|四月开启第一局]EasySignin 100 【gopher打mysql】
  • 【LeetCode】1. 两数之和
  • 【PHP的static】
  • day51 第十一章:图论part02
  • 基于Matlab实现六自由度机械臂正逆运动仿真(源码)
  • 单片机简介
  • 2025常用的SEO工具有哪些?
  • PyTorch Lightning多GPU分布式日志介绍
  • (Xshell 8 + Xftp 8)下载安装miniconda至服务器指定目录+配置虚拟环境
  • K8S容器启动提示:0/2 nodes are available: 2 Insufficient cpu.
  • CSS 小技巧 —— CSS 实现 Tooltip 功能-鼠标 hover 之后出现弹层
  • 二分查找sql时间盲注,布尔盲注
  • 【翻译+论文阅读】DeepSeek-R1评测:粉碎GPT-4和Claude 3.5的开源AI革命
  • Kubernetes 最佳实践:Top 10 常见 DevOps/SRE 面试问题及答案
  • RTD2775QT/RTD2795QT瑞昱显示器芯片方案
  • 21vue3实战-----git husky和git commit规范
  • 大语言模型多代理协作(MACNET)
  • 计算机视觉中图像的基础认知
  • 二级等保对机房的要求
  • 今年前4个月上海对拉美国家进出口总值增长2%
  • 金正恩观摩朝鲜人民军各兵种战术综合训练
  • 经济日报整版聚焦:上海构建法治化营商环境,交出高分答卷
  • 韩国总统选战打响:7人角逐李在明领跑,执政党临阵换将陷入分裂
  • 全国层面首次!《防震减灾基本知识与技能大纲》发布
  • 被流量绑架人生,《人生开门红》能戳破网络时代的幻象吗