This isn't what you're asking, but is a tip. The trick to programming any type of sound - be it strings, drums or guitar - is to understand how the instrument is played. You will write much more convincing parts if you are imagining yourself as the musician playing the part. You want to be telling your sequencer what movements the player is making, and to be able to do that, you need to be able to feel that motion.
The only way to do that is to play the instrument for real. So if you've never played any bowed string instrument in your life, borrow a violin from a friend, and play around with it for a few weeks. The idea here isn't to become a good violin player, but to internalise the motions you need to make in order to produce a sound with the instrument. To understand the limitations of the instrument and the physical limitations on playing. You translate this motion into MIDI through articulations, expression/volume, manual placement of notes and lengths, pitch bend etc.
With bowed instruments, for example, you can't bow indefinitely in one direction. At some point you need to reverse direction. If you can tell your sequencer when that is happening, your parts will come to life. Different types of articulations require different hand movements. When you play stabs, there's a lot more movement in the bowing arm. That takes time. There are no frets; you can slide. Vibrato is essential, and normally best done manually rather than with the pitch wheel.
Ensemble patches hand have their place for "filling up the sound". You will get much better results if you program each instrument in the ensemble separately though. If you're going full orchestral, you can always do 1st, 2nd and 3rd violins as their own tracks, and then have a violin ensemble for the rest, for example.
At any rate, no matter how good the library, convincing strings are all in the programming and it can be quite labour-intensive.
None of this is necessary for pop strings of course.