Skip to content

/api/generate

  • 它是一个相对基础的文本生成端点,主要用于根据给定的提示信息生成一段连续的文本。这个端点会基于输入的提示,按照模型的语言生成能力输出一段完整的内容,更侧重于单纯的文本生成任务
  • 生成过程不依赖于上下文的历史对话信息,每次请求都是独立的,模型仅依据当前输入的提示进行文本生成
  • 适用于需要一次性生成一段特定主题文本的场景,如撰写文章、
  • 生成故事、生成摘要等。当你只需要根据一个简单的提示获取一段完整的文本内容时,使用 api/generate 会更加方便,例如,你需要生成一篇关于旅游景点的介绍文章,只需要提供景点名称作为提示,就可以使用该端点获取相应的文章内容
  • 基本参数:
    • model(必需) : 模型名称
    • prompt:用于指定要生成文本的起始信息
    • stream:是否流时输出

/api/chat

  • 该端点专为模拟聊天场景设计,具备处理对话上下文的能力。它可以跟踪对话的历史记录,理解对话的上下文信息,从而生成更符合对话逻辑和连贯性的回复
  • 更注重模拟真实的人机对话交互,能够根据历史对话和当前输入生成合适的回应,适用于构建聊天机器人等交互式应用
  • 主要用于构建交互式的聊天应用,如智能客服、聊天机器人等。在这些场景中,用户与系统进行多轮对话,需要系统能够根据历史对话内容理解用户意图并做出合适的回应,比如,在一个在线客服系统中,用户可以不断提出问题,系统使用 api/chat 端点根据历史对话和当前问题生成相应的解答,为用户提供连贯的服务
  • 基本参数:
    • model(必需) : 模型名称
    • messages:聊天消息,可用于保留聊天记录
  • messages 对象的参数:
    • role:消息的角色,可以是 system(系统)、user(用户)、assistant(助手)或 tool(工具)
    • content:消息的内容

3 基于springboot+vue-cli+deepSeek聊天机器人案例

3.1 springboot实现步骤

1 添加依赖

xml
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.2.RELEASE</version>
    </parent>
    <dependencies>
        <!--spring boot web集成依赖  -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--data注解所需依赖-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        </dependencies>

2 在application配置文件中配置访问deepseek

properties
# DeepSeek API 配置


<NolebasePageProperties />




deepseek.api.url=http://localhost:11434/api/chat
deepseek.api.model=deepseek-r1:1.5b

3 创建deepseek 请求体对象

java
package com.hqyj.pojo;
import lombok.Data;
import java.util.List;
/**
 *  deepseek 请求体
 */
@Data
public class ChatRequest {
    //模型
    private String model;
    //聊天消息,可用于保留聊天记录
    private List<Message> messages;
    //流式返回
    private boolean stream = false;

    @Data
    public static class Message {
        //role:消息的角色,可以是 system(系统)、user(用户)、assistant(助手)或 tool(工具)
        private String role;
        // 消息的内容
        private String content;
    }
}

4 创建实现类代码,接口这里就不贴了,根据方法自行补上

java
package com.hqyj.service.impl;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.hqyj.pojo.ChatRequest;
import com.hqyj.util.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

import java.util.Collections;
import java.util.Map;

@Slf4j
@Service
public class ChatServiceImpl {

    @Value("${deepseek.api.url}")
    private String apiUrl;

    @Value("${deepseek.api.model}")
    private String model;

    public R chat(String question) {
        //创建deepSeek请求的聊天信息对象
        ChatRequest.Message message = new ChatRequest.Message();
        //设置角色
        message.setRole("user");
        //设置问题内容
        message.setContent(question);
        //创建deepSeek请求对象
        ChatRequest request = new ChatRequest();
        //设置聊天信息
        request.setMessages(Collections.singletonList(message));
        //设置模型
        request.setModel(model);
        //创建RestTemplate对象
        RestTemplate restTemplate = new RestTemplate();
        //发送POST请求
        Map<String,Object> map = restTemplate.postForObject(apiUrl, request, Map.class);
        System.out.println( map);
        return R.ok("success",map);
    }

}

5 控制接口

java
 @RestController
@RequestMapping("/user-info")
public class UserInfoController {

@Autowired
    private ChatServiceImpl chatService;

@PostMapping("/chat")
    public R chat(@RequestBody String question)
    {
        return chatService.chat(question);
    }
}

6 测试接口 http://localhost:8081/user-info/chat

贡献者

The avatar of contributor named as freeway348 freeway348

文件历史

撰写