សេវាកម្មនេះផ្តល់នូវប្រតិបត្តិការកាលគណនេយ្យមូលដ្ឋានតាមរយៈប្រព័ន្ធ Model Context Protocol (MCP) ដោយប្រើ Spring Boot ជាមួយការដឹកជញ្ជូន WebFlux។ វាត្រូវបានរចនាឡើងជាគំរូសាមញ្ញសម្រាប់អ្នកដំបូងដែលកំពុងសិក្សាពីការអនុវត្ត MCP។
សម្រាប់ព័ត៌មានបន្ថែម សូមមើលឯកសារយោង MCP Server Boot Starter។
សេវាកម្មនេះបង្ហាញពី៖
- ការគាំទ្រ SSE (Server-Sent Events)
- ការចុះបញ្ជីឧបករណ៍ដោយស្វ័យប្រវត្តិស_using
@Toolannotation របស់ Spring AI - មុខងារកាលគណនេយ្យមូលដ្ឋាន៖
- ការរួមបញ្ចូល ការដក ផលគុណ ហើយបែង
- ការគណនាថាមពល និងឫសការ៉េ
- ការគណនា modulus (នៅសំណល់) និងតម្លៃភាព مطلق
- មុខងារជំនួយសម្រាប់ពិពណ៌នាប្រតិបត្តិការ
សេវាកម្មកាលគណនេយ្យនេះផ្តល់នូវមុខងារដូចខាងក្រោម៖
-
ប្រតិបត្តិការអរូបិចមូលដ្ឋាន៖
- បូកលេខពីរចូលគ្នា
- ដកលេខមួយពីលេខមួយទៀត
- គុណលេខពីរចូលគ្នា
- ចែកលេខមួយដោយលេខមួយ (មានការត្រួតពិនិត្យចែកដោយសូន្យ)
-
ប្រតិបត្តិការវិជ្ជមាន៖
- គណនាថាមពល (លើកមូលដ្ឋានទៅកម្រិតសណ្ឋាន)
- គណនាឫសការ៉េ (មានការត្រួតពិនិត្យលេខអវិជ្ជមាន)
- គណនាម៉ូឌុលស (នៅសំណល់)
- គណនាតម្លៃភាព مطلق
-
ប្រព័ន្ធជំនួយ៖
- មុខងារជំនួយដំបូងដែលពន្យល់ពីប្រតិបត្តិការទាំងអស់ដែលមាន
សេវាកម្មនេះបង្ហាញចេញ API endpoints តាមរយៈពិធីករ MCP៖
add(a, b): បូកលេខពីរចូលគ្នាsubtract(a, b): ដកលេខទីពីរពីលេខទីមួយmultiply(a, b): គុណលេខពីរចូលគ្នាdivide(a, b): ចែកលេខទីមួយដោយលេខទីពីរ (មានការត្រួតពិនិត្យចែកដោយសូន្យ)power(base, exponent): គណនថាមពលsquareRoot(number): គណនាឫសការ៉េ (មានការត្រួតពិនិត្យលេខអវិជ្ជមាន)modulus(a, b): គណនាសំណល់absolute(number): គណនាតម្លៃភាព مطلقhelp(): ទទួលបានព័ត៌មានអំពីប្រតិបត្តិការដែលមាន
អតិថិជនសាកល្បងសាមញ្ញត្រូវបានបញ្ចូលក្នុងកញ្ចប់ com.microsoft.mcp.sample.client។ ថ្នាក់ SampleCalculatorClient បង្ហាញពីប្រតិបត្តិការដែលមានក្នុងសេវាកម្មកាលគណនេយ្យ។
គម្រោងរួមបញ្ចូលអតិថិជនគំរូ LangChain4j ក្នុង com.microsoft.mcp.sample.client.LangChain4jClient ដែលបង្ហាញពីការរួមបញ្ចូលសេវាកម្មកាលគណនេយ្យជាមួយ LangChain4j និងម៉ូដែល GitHub៖
-
ការតំឡើងToken GitHub:
ដើម្បីប្រើម៉ូដែល AI របស់ GitHub (ដូចជា phi-4) អ្នកត្រូវការទិដ្ឋភាពចូលផ្ទាល់ខ្លួន GitHub៖
a. ចូលទៅកាន់ការកំណត់គណនី GitHub របស់អ្នក៖ https://github.com/settings/tokens
b. ចុច "Generate new token" → "Generate new token (classic)"
c. ផ្ដល់ឈ្មោះសម្រាប់ token របស់អ្នក
d. ជ្រើស scope ដូចខាងក្រោម៖
repo(ការគ្រប់គ្រងពេញលេញនៃឃ្លាំងឯកជន)read:org(អានក្រុម និងសមាជិកក្រុម ព្រមទាំងគម្រោងក្នុងអង្គភាព)gist(បង្កើត gists)user:email(ចូលប្រើអាសយដ្ឋានអ៊ីមែលអ្នកប្រើ (អានបានតែ))
e. ចុច "Generate token" ហើយចម្លង token ថ្មីរបស់អ្នក
f. កំណត់វាជាតម្លៃបរិស្ថាន៖
នៅលើ Windows:
set GITHUB_TOKEN=your-github-tokenនៅលើ macOS/Linux:
export GITHUB_TOKEN=your-github-tokeng. សម្រាប់ការតំឡើងយូរអង្វែង អ្នកអាចបន្ថែមវាទៅក្នុងអថេរបរិស្ថានតាមការកំណត់ប្រព័ន្ធ
-
បញ្ចូលផ្នែកពឹងផ្អែក LangChain4j GitHub ទៅក្នុងគម្រោងរបស់អ្នក (បានបញ្ចូលរួចក្នុង pom.xml)៖
<dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-github</artifactId> <version>${langchain4j.version}</version> </dependency>
-
ប្រាកដថាសែរ៉្វើកាលគណនេយ្យកំពុងរត់នៅ
localhost:8080
គំរូនេះបង្ហាញ៖
- ការតភ្ជាប់ទៅម៉ាស៊ីនមេ MCP កាលគណនេយ្យ តាមរយៈការដឹកជញ្ជូន SSE
- ការប្រើ LangChain4j ដើម្បីបង្កើត chatbot ដែលប្រើប្រតិបត្តិការកាលគណនេយ្យ
- ការរួមបញ្ចូលជាមួយម៉ូដែល AI GitHub (បច្ចុប្បន្នគឺម៉ូដែល phi-4)
អតិថិជនផ្ញើសំណួរគំរូសម្រាប់បង្ហាញមុខងារដូចខាងក្រោម៖
- គណនាចំនួនបូករវាងលេខពីរ
- ស្វែងរកឫសការេរបស់លេខមួយ
- ទទួលបានព័ត៌មានជំនួយអំពីប្រតិបត្តិការកាលគណនេយ្យដែលមាន
រត់គំរូហើយពិនិត្យមើលលទ្ធផលនៅក្នុង console ដើម្បីមើលថាម៉ូដែល AI ប្រើឧបករណ៍កាលគណនេយ្យដើម្បីឆ្លើយសំណួរ។
អតិថិជន LangChain4j ត្រូវបានកំណត់ឲ្យប្រើម៉ូដែល phi-4 របស់ GitHub ជាមួយការកំណត់ដូចខាងក្រោម៖
ChatLanguageModel model = GitHubChatModel.builder()
.apiKey(System.getenv("GITHUB_TOKEN"))
.timeout(Duration.ofSeconds(60))
.modelName("phi-4")
.logRequests(true)
.logResponses(true)
.build();ដើម្បីប្រើម៉ូដែល GitHub ផ្សេងទៀត អ្នកអាចផ្លាស់ប្តូរ parameter modelName ទៅម៉ូដែលផ្សេង ដែលគាំទ្រ (ឧ. "claude-3-haiku-20240307", "llama-3-70b-8192", ល។)។
គម្រោងត្រូវការផ្នែកពឹងផ្អែកសំខាន់ៗដូចខាងក្រោម៖
<!-- For MCP Server -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-server-webflux</artifactId>
</dependency>
<!-- For LangChain4j integration -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-mcp</artifactId>
<version>${langchain4j.version}</version>
</dependency>
<!-- For GitHub models support -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-github</artifactId>
<version>${langchain4j.version}</version>
</dependency>កសាងគម្រោងដោយប្រើ Maven៖
./mvnw clean install -DskipTestsjava -jar target/calculator-server-0.0.1-SNAPSHOT.jarMCP Inspector គឺជាឧបករណ៍មានប្រយោជន៍សម្រាប់ធ្វើអន្តរកម្មជាមួយសេវាកម្ម MCP។ ដើម្បីប្រើវាជាមួយសេវាកម្មកាលគណនេយ្យនេះ៖
-
ដំឡើង និងរត់ MCP Inspector នៅក្នុងវិនដូរថ្មី៖
npx @modelcontextprotocol/inspector
-
ចូលប្រើ UI គេហទំព័រ ដោយចុចលើ URL ដែលកម្មវិធីបង្ហាញ (ជាទូទៅ http://localhost:6274)
-
កំណត់ការតភ្ជាប់៖
- កំណត់ប្រភេទការដឹកជញ្ជូនជា "SSE"
- កំណត់ URL ទៅ SSE endpoint នៃម៉ាស៊ីនមេរបស់អ្នក៖
http://localhost:8080/sse - ចុច "Connect"
-
ប្រើឧបករណ៍៖
- ចុច "List Tools" ដើម្បីមើលប្រតិបត្តិការកាលគណនេយ្យដែលមាន
- ជ្រើសឧបករណ៍ ហើយចុច "Run Tool" ដើម្បីអនុវត្តប្រតិបត្តិការ
គម្រោងរួមបញ្ចូល Dockerfile សម្រាប់ការផ្គត់ផ្គង់ជាកុងតឺន័រ៖
-
កសាងរូបភាព Docker៖
docker build -t calculator-mcp-service . -
រត់កុងតឺន័រ Docker៖
docker run -p 8080:8080 calculator-mcp-service
នេះនឹង៖
- កសាងរូបភាព Docker ច្រើនដំណាក់កាល ជាមួយ Maven 3.9.9 និង Eclipse Temurin 24 JDK
- បង្កើតរូបភាព container ដែលមានប្រសិទ្ធភាព
- បង្ហាញសេវាកម្មនៅលើព្រួញ 8080
- ចាប់ផ្តើមសេវាកម្ម MCP កាលគណនេយ្យក្នុង container
អ្នកអាចចូលប្រើសេវាកម្មនៅ http://localhost:8080 ពេល container កំពុងរត់។
-
បញ្ហាសិទ្ធិ Token៖ ប្រសិនបើអ្នកទទួលបានកំហុស 403 Forbidden សូមពិនិត្យថា token របស់អ្នកមានសិទ្ធិត្រឹមត្រូវដូចបានបង្ហាញក្នុងលក្ខខណ្ឌមុន។
-
រកមិនឃើញ Token៖ ប្រសិនបើអ្នកទទួលបានកំហុស "No API key found" សូមប្រាកដថា environment variable GITHUB_TOKEN ត្រូវបានកំណត់ត្រឹមត្រូវ។
-
កំណត់អត្រាចូលប្រើ៖ GitHub API មានកំណត់អត្រា។ ប្រសិនបើអ្នកប្រទះកំហុសកំណត់អត្រា (ស្ថានធានលេខ 429) សូមរង់ចាំប៉ុន្មាននាទីមុនព្យាយាមម្តងទៀត។
-
ភាពផុតកំណត់របស់ Token៖ Token GitHub អាចផុតកំណត់។ ប្រសិនបើអ្នកទទួលបានកំហុសបញ្ជាក់សុពលភាពបន្ទាប់ពីរយៈពេល សូមបង្កើត token ថ្មី និងបន្ទាន់សម័យ environment variable របស់អ្នក។
បើអ្នកត្រូវការជំនួយបន្ថែម សូមពិនិត្យ ឯកសារ LangChain4j ឬ ឯកសារ GitHub API។
ការប្រុងប្រយ័ត្ន៖
ឯកសារនេះត្រូវបានបំលែងភាសាតាមរយៈសេវាកម្មបំលែងភាសា AI Co-op Translator។ ទោះបីយើងខិតខំរកភាពត្រឹមត្រូវ ក៏សូមយកចិត្តទុកដាក់ថាការបំលែងភាសាដោយស្វ័យប្រវត្តិនេះអាចមានកំហុសឬការមិនត្រឹមត្រូវខ្លះ។ ឯកសារដើមនៅក្នុងភាសារបស់វាគួរត្រូវបានគិតថាជាដើមហើយជាហារឡិចសម្រាប់យោង។ សម្រាប់ព័ត៌មានសំខាន់ សូមពិចារណាការប្រើប្រាស់ការបំលែងភាសាដោយមនុស្សជំនាញវិជ្ជាជីវៈ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសភាសាចេញពីការប្រើប្រាស់ការបំលែងភាសានេះឡើយ។
