Files
project_6/upstream_ref/xllm/xllm/cc_api/llm.h
EX Engine 002f9879b2 ref(upstream): FULL TREE — Deep-Spark xllm (1470) + ds_vllm csrc/models (703)
Replaces cherry-picked upstream_ref with complete source trees.

xllm/ — Iluvatar official C++ inference engine (15MB, 1470 files)
  Complete: kernels → layers → models → runtime → scheduler → api
  Excluded: .git, binary images, third_party submodule checkouts

ds_vllm/ — Iluvatar official vllm fork (8MB, 703 files)
  Included: csrc/ (ALL CUDA kernels), fused_moe/, qwen3_5 model, _custom_ops
  Excluded: tests, benchmarks, docs, examples (not needed for reference)

Critical call chains now fully traceable:
  MoE: moe_topk_softmax_kernels.cuh → ixformer.h → fused_moe.cpp → layer
  GDN: qwen3_gated_delta_net_base.cpp → qwen3_5_gated_delta_net.cpp
  Attention: ixformer.h → xllm_paged_attention → attention.cpp
2026-08-10 02:54:03 +00:00

95 lines
3.2 KiB
C++

/* Copyright 2025 The xLLM Authors. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://github.com/jd-opensource/xllm/blob/main/LICENSE
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
==============================================================================*/
#pragma once
#include <atomic>
#include <optional>
#include <string>
#include "macros.h"
#include "types.h"
namespace xllm {
// Forward declaration
struct LLMCore;
// A wrapper for loading, initializing, and text generation functions of large
// language models
class XLLM_CAPI_EXPORT LLM {
public:
LLM();
virtual ~LLM();
LLM(const LLM&) = delete;
LLM& operator=(const LLM&) = delete;
LLM(LLM&&) noexcept = delete;
LLM& operator=(LLM&&) noexcept = delete;
/**
* @brief Initialize the model: Load model files and configure runtime
* environment
* @param model_path Path to model files
* @param devices Device configuration (format: "npu:1" for specific NPU,
* "auto" for auto-selection)
* @param init_options Advanced initialization options, Provided default
* configuration
* @return bool true if initialization succeeds; false if fails
* @note Must be called before Completions/ChatCompletions, and only needs to
* be called once
*/
bool Initialize(const std::string& model_path,
const std::string& devices,
const XLLM_InitLLMOptions& init_options);
/**
* @brief Generate completions for the given prompt
* @param model_id ID of the loaded model
* @param prompt Input prompt text
* @param timeout_ms Timeout in milliseconds
* @param request_params Request parameters (temperature, max tokens, etc.)
* @return XLLM_Response Response containing generated text and
* metadata
*/
XLLM_Response Completions(const std::string& model_id,
const std::string& prompt,
uint32_t timeout_ms,
const XLLM_RequestParams& request_params);
/**
* @brief Generates chat completions based on a sequence of conversation
* messages
* @param model_id ID of the loaded model
* @param messages A list of XLLM_ChatMessage objects representing the
* conversation history, each message contains a role (user/assistant/system)
* and content text
* @param timeout_ms Timeout in milliseconds
* @param request_params Request parameters (temperature, max tokens, etc.)
* @return XLLM_Response Response containing generated text and
* metadata
*/
XLLM_Response ChatCompletions(const std::string& model_id,
const std::vector<XLLM_ChatMessage>& messages,
uint32_t timeout_ms,
const XLLM_RequestParams& request_params);
private:
// Opaque pointer to internal LLM core implementation
LLMCore* llm_core_ = nullptr;
};
} // namespace xllm